rekenen met datetime
Nu heb ik het volgende alleen werkt dit niet:
SELECT voornaam, CURRENT_DATE(), tijd, DATEDIFF(CURRENT_DATE(), tijd) AS verschil FROM klant;
select voornaam, tijd, unix_timestamp(now())-unix_timestamp(tijd) as verschil from klant;
Het is mij overigens niet duidelijk waarom je CURRENT_DATE() in de SELECT hebt staan en dan ook nog zonder ALIAS. Dat is lastig werken in php.
De functie DATEDIFF() ziet er goed uit, maar je moet wel bedenken dat je nu met datums bezig bent en niet met tijden (uren, minuten en seconden) wat je met TIMEDIFF() kunt berekenen. De vraag is dus wat je nu precies wilt berekenen en wat er fout gaat.
http://dev.mysql.com/doc/refman/4.1/en/date-and-time-functions.html
Edit: @Rudi: Die timestamps heb je niet nodig, TIMEDIFF() doet de truc ook, maar dan eenvoudiger. Althans, zo denk ik er over... ;)
Gewijzigd op 01/01/1970 01:00:00 door Frank -
SELECT naam, tijd, TIMEDIFF( TIMEDIFF( NOW( ) , tijd ) ) AS minuten
FROM klanten
MySQL retourneerde:
#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '( TIMEDIFF( NOW( ) , tijd ) ) AS uren
FROM klanten
LIMIT 1' a
En wanneer je alleen de uren wilt hebben, dan kun je
MINUTE(TIMEDIFF( NOW( ) , tijd )) AS minuten
gebruiken.
SELECT naam, tijd, MINUTE(TIMEDIFF(NOW( ),tijd)) AS minuten
FROM klanten
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
$query = ""; // jouw SQL
$result = mysql_query($query);
if(!$result){
echo 'Query mislukt vanwege: '.mysql_error();
}
else {
$rows = mysql_num_rows($result);
echo 'er zijn '.$rows.' geselecteerd.'
while($row = mysql_fetch_assoc($result)){
echo $row['minuten'];
}
}
?>
$query = ""; // jouw SQL
$result = mysql_query($query);
if(!$result){
echo 'Query mislukt vanwege: '.mysql_error();
}
else {
$rows = mysql_num_rows($result);
echo 'er zijn '.$rows.' geselecteerd.'
while($row = mysql_fetch_assoc($result)){
echo $row['minuten'];
}
}
?>
Opmerking: De functie MINUTE() kan prima werk verrichten, maar lijkt mij hier niet op zijn plaats. TIMEDIFF() geeft een antwoord in het formaat hh:mm:ss en om daar nu alleen de minuten van te nemen, het lijkt mij wat vreemd.