|
Categorieën >
PHP & SQL
Tijds vraag
elian – 14/01/2012 16:30 (Laatst gewijzigd op 14/01/2012 16:31)
|
|
offline
|
Lid
|
Beste,
Ik heb in mijn database een kolom datetime
met een insert gaat NOW() erin
nu mijn vraag, ik zou graag willen weten hoe ik het volgende kan berekenen:
$today = date("Y-m-d G:i:s", strtotime('-1 hour'));
met de tijd die uit de kolom datetime komt.
met dank |
4 antwoorden
MiST – 14/01/2012 19:01 (Laatst gewijzigd op 14/01/2012 19:01)
|
|
offline
|
Lid
|
Wel, als je er de documentatie van PHP op naleest, is dat eenvoudig. strtotime geeft je een integer terug, de timestamp. Een timestamp is gewoon het aantal seconden sinds 1 januari 1970. En dus...
In de veronderstelling dat je kolom in de associatieve array $col zit:
// Tijd - 1 uur(= 60 minuten * 60 seconden = 3600)
$timeMinusOneHour = strtotime($col['datetime']) - 3600;
$string = date('Y-m-d G:i:s', $timeMinusOneHour);
// Tijd - 1 uur(= 60 minuten * 60 seconden = 3600) $timeMinusOneHour = strtotime($col['datetime']) - 3600; $string = date('Y-m-d G:i:s', $timeMinusOneHour);
|
WouterJ – 14/01/2012 20:09 (Laatst gewijzigd op 14/01/2012 20:17)
|
|
offline
|
HTML gevorderde
|
Nu kun je dit ook oplossen met alleen SQL:
SELECT
DATE_FORMAT(datumveld - INTERVAL 1 HOUR, '%Y-%m-%d %G:%i:%s') AS date
FROM
someTable
SELECT DATE_FORMAT(datumveld - INTERVAL 1 HOUR, '%Y-%m-%d %G:%i:%s') AS date FROM someTable
@MiST, in PHP kun je hiervoor gewoon PHP.net: strtotime gebruiken:
$tijd = date('Y-m-d G:i:s', strtotime($row['date'].' - 1 hour'));
$tijd = date('Y-m-d G:i:s', strtotime($row['date'].' - 1 hour'));
|
|
|
|
offline
|
Lid
|
bedankt mensen
|
MiST – 15/01/2012 12:13
|
|
offline
|
Lid
|
@WouterJ. Hoewel het perfect mogelijk is, vind ik dergelijke constructies precies intuïtief gevaarlijk (echter geen idee waarom). Het is het ook net een tikkeltje trager, al is het verschil nauwelijks merkbaar: 1.367 seconden op 1 miljoen uitvoeringen kan je eigenlijk verwaarloosbaar noemen.
MiST@mist-notebook /tmp
$ time php mine.php
real 0m48.868s
user 0m0.000s
sys 0m0.015s
MiST@mist-notebook /tmp
$ time php yours.php
real 0m50.235s
user 0m0.000s
sys 0m0.031s
MiST@mist-notebook /tmp $ time php mine.php real 0m48.868s user 0m0.000s sys 0m0.015s MiST@mist-notebook /tmp $ time php yours.php real 0m50.235s user 0m0.000s sys 0m0.031s
|
Je moet ingelogd zijn om een reactie te kunnen posten.
|
|
|