2010-09-01 14 views
40

będę zilustrować, co chciałbym dostać w poniższym przykładzie:Jak uzyskać różnicę między dwoma datami zaokrąglone do godziny

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

Korzystanie TIMEDIFF(), otrzymujemy 2 wyniku. Oznacza to, że nie bierze pod uwagę pozostałych 50 minut.

W tym przypadku chciałbym uzyskać: 50 (minut)/60 = 0,83 okresu. Dlatego wynik powinien być 2,83 a nie 2.

+2

Czy rzutujesz na liczbę całkowitą? Powinieneś otrzymać wynik czasu, np. "2:50:00". – Matthew

Odpowiedz

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: Dobrze zrobione! –

+0

Dziękuję. To działa! –

+8

Rozwiązanie timediff ma problem: nie może mieć wartości większej niż 839 godzin (minus 1 sekunda). Więc nie będzie w stanie znaleźć różnicy z więcej niż ~ 35 dni –

10

Można spróbować wykonać następujące czynności:

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, tratar de publicar las respuestas en Inglés. – Jules

+4

Ważną częścią tego było (nie ma to żadnego znaczenia, ale rozumiem odpowiedź hsi): -/ – Mawg

+0

Przesyłałeś wiadomości w niewłaściwym sąsiedztwie, ale i tak twoje zamiary są doceniane. Tome su voto a favor. – DragShot

7

Zastosowanie TIMESTAMPDIFF o dokładnej liczbie godzin:

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

MySQL uzyskać liczbę godzin pomiędzy znacznikami czasowymi:

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

Dlaczego nie 'timestampdiff (godzina, 2010-09-01 00:10:00 ',' 2010-09-01 03:00:00 ')'? – codeforester

+0

Nie uwzględnia minut. Ta, którą zasugerowałeś, zwraca odpowiedź jako 2, podczas gdy powyższe rozwiązanie daje 2,83 (0,83 godziny to różnica 50 minut) – bangde

0

Jeśli używasz znacznik czasu, może to być rozwiązanie w MySQL za pomocą 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) 
Powiązane problemy