2010-09-01 34 views
40

tôi sẽ minh họa những gì tôi muốn để có được trong ví dụ sau:Làm thế nào để có được sự khác biệt giữa hai ngày làm tròn đến giờ

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

Sử dụng TIMEDIFF(), chúng tôi nhận được 2 kết quả là. Điều này có nghĩa là, nó không xem xét 50 phút còn lại.

Trong trường hợp này, điều tôi muốn nhận là: 50 (phút)/60 = 0,83. Do đó, kết quả sẽ là 2,83 và không 2.

+2

Bạn có đang truyền tới số nguyên không? Bạn sẽ nhận được kết quả về thời gian, như '2:50:00'. – Matthew

Trả lời

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: Được thực hiện tốt! –

+0

Cảm ơn bạn. Những công việc này! –

+8

giải pháp timediff có vấn đề: nó không thể có giá trị hơn 839 giờ (trừ 1 giây). Vì vậy, nó sẽ không thể tìm thấy một sự khác biệt với hơn ~ 35 ngày –

10

Bạn có thể thử như sau:

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

+4

phần quan trọng của nó là (không có hablo espan ~ ol, nhưng tôi understod hsi trả lời): -/ – Mawg

+0

Bạn reposted trong khu phố sai, nhưng ý định của bạn được đánh giá cao anyway. Tome su voto a favor. – DragShot

7

Sử dụng TIMESTAMPDIFF cho chính xác số lượng giờ:

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

MySQL nhận được số giờ giữa timestamps:

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

Tại sao không phải 'timestampdiff (giờ, '2010-09-01 00:10:00', '2010-09-01 03:00:00')'? – codeforester

+0

Nó không tính đến số phút. Một trong những bạn đề nghị trả về câu trả lời là 2, trong khi các giải pháp trên cho 2,83 (0,83 giờ là sự khác biệt của 50 phút) – bangde

0

Nếu bạn đang sử dụng dấu thời gian, điều này có thể là giải pháp trong MySQL sử dụng 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) 
Các vấn đề liên quan