Je suis occupé avec ça depuis des heures, mais je ne peux pas le faire fonctionner.
SQL
SELECT DATEDIFF(end_time, start_time) as `difference` FROM timeattendance WHERE timeattendance_id = '1484'
start_time = 2012-01-01 12:00:00
end_time = 2012-01-02 13:00:00
La différence est de 25 (heures). Mais la sortie que j'obtiens est de 1 (jour).
Comment puis-je obtenir les 25 heures de sortie?
Qu'en est-il de l'utilisation de TIMESTAMPDIFF ?
SELECT TIMESTAMPDIFF(HOUR, start_time, end_time)
as `difference` FROM timeattendance WHERE timeattendance_id = '1484'
Il vaut mieux utiliser TIMEDIFF au lieu de DATEDIFF car DATEDIFF convertit toutes les heures en dates avant de comparer. Après avoir exécuté TIMEDIFF, vous pouvez obtenir des heures avec la fonction HEURE.
SELECT HOUR(TIMEDIFF(end_time, start_time)) as `difference`;
Comme indiqué dans MySQL référence , DATEDIFF
ne prend que des jours en compte.
Si les deux dates sont postérieures à 1970, vous pouvez soustraire des horodatages:
SELECT ( UNIX_TIMESTAMP("2012-01-02 13:00:00") -
UNIX_TIMESTAMP("2012-01-01 12:00:00") ) / 3600 ...
ou:
SELECT TIMEDIFF ( "2012-01-02 13:00:00", "2012-01-01 12:00:00") / 3600 ...
Vous pouvez utiliser la fonction TIMEDIFF et HOUR pour extraire simplement l'heure.
SELECT HOUR(TIMEDIFF(end_time, start_time)) as `difference` FROM timeattendance WHERE timeattendance_id = '1484'
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_timediff
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_hour