times - timediff en mysql
Mostrar solo las horas en MYSQL DATEDIFF (4)
¿Qué pasa con el uso de TIMESTAMPDIFF ?
SELECT TIMESTAMPDIFF(HOUR, start_time, end_time)
as `difference` FROM timeattendance WHERE timeattendance_id = ''1484''
He estado ocupado con esto por horas, pero no puedo hacerlo funcionar.
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 diferencia es de 25 (horas). Pero la salida que obtengo es 1 (día).
¿Cómo puedo obtener las 25 horas como salida?
Como se indica en la reference MySQL, DATEDIFF
solo toma días en cuenta.
Si ambas fechas son posteriores a 1970, puede sustraer las marcas de tiempo:
SELECT ( UNIX_TIMESTAMP("2012-01-02 13:00:00") -
UNIX_TIMESTAMP("2012-01-01 12:00:00") ) / 3600 ...
o:
SELECT TIMEDIFF ( "2012-01-02 13:00:00", "2012-01-01 12:00:00") / 3600 ...
Es mejor que use TIMEDIFF en lugar de DATEDIFF, ya que DATEDIFF se traduce todos los tiempos a las fechas antes de comparar. Después de realizar TIMEDIFF puede obtener horas con la función HORA.
SELECT HOUR(TIMEDIFF(end_time, start_time)) as `difference`;
Puede utilizar las funciones TIMEDIFF y HOUR para extraer la hora.
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