2010-09-01 16 views
40

Voy a ilustrar lo que me gustaría estar en el siguiente ejemplo:¿Cómo obtener la diferencia entre dos fechas redondeadas a horas

'2010-09-01 03:00:00' - '2010-09-01 00:10:00' 

Usando TIMEDIFF(), obtenemos 2 como resultado. Esto significa que no está considerando los 50 minutos restantes.

En este caso, lo que me gustaría obtener es: 50 (minutos)/60 = 0,83 punto. Por lo tanto, el resultado debería ser 2,83 y no 2.

+2

¿Va a realizar un número entero? Deberías obtener un resultado de tiempo atrás, como '2:50:00'. – Matthew

Respuesta

89
select time_to_sec(timediff('2010-09-01 03:00:00', '2010-09-01 00:10:00'))/3600; 

+-----------------------------------------------------------------------------+ 
| time_to_sec(timediff('2010-09-01 03:00:00', '2010-09-01 00:10:00'))/3600 | 
+-----------------------------------------------------------------------------+ 
|                  2.8333 | 
+-----------------------------------------------------------------------------+ 
+2

+1: ¡Bien hecho! –

+0

Gracias. ¡Esto funciona! –

+8

solución timediff tiene un problema: no puede tener un valor de más de 839 horas (menos 1 segundo). Por lo tanto, no podrá encontrar una diferencia con más de ~ 35 días –

10

Usted podría intentar lo siguiente:

time_format(timediff(max(l.fecha), min(l.fecha)),'%H:%m') //Hora y minutos 
+4

Este sitio es Inglés. Su ayuda se agradece, pero por favor, trata de publicar las respuestas en inglés. – Jules

+4

la parte importante de esto fue (no hablo español, pero no entendí su respuesta): -/ – Mawg

+0

Ha vuelto a publicar en el vecindario equivocado, pero sus intenciones son apreciadas de todos modos. Tome su voto a favor. – DragShot

7

Uso TIMESTAMPDIFF para el número exacto de horas:

SELECT 
     b.`Start_Date`, 
     b.`End_Date`, 
     TIMESTAMPDIFF(HOUR, b.`Start_Date`, b.`End_Date`) AS `HOURS` 
FROM my_table b; 
0

MySQL obtener el número de horas entre las marcas de tiempo:

select timestampdiff(second,'2010-09-01 00:10:00', '2010-09-01 03:00:00')/3600; 
+0

¿Por qué no 'timestampdiff (hora, '2010-09-01 00:10:00', '2010-09-01 03:00:00')'? – codeforester

+0

No tiene en cuenta los minutos. El que sugirió devuelve la respuesta como 2, mientras que la solución anterior da 2.83 (0.83 horas es la diferencia de 50 minutos) – bangde

0

Si está utilizando marca de tiempo, esto podría ser la solución en MySQL usando SQL.

SELECT TIMESTAMPDIFF(HOUR, '2010-11-29 13:13:55', '2010-11-29 13:16:55') as newtable; 

| newtable | 

7 

1 row in set (0.01 sec) 
Cuestiones relacionadas