2017-05-17 28 views
0

我有以下查詢:mysql的給一個錯誤的timeDiff測量出20的右

SELECT `Time`, 
    `Resolution`, 
    HOUR(TIMEDIFF(`Resolution`,`Time`)), 
    TIMEDIFF(`Resolution`,`Time`), 
    datediff(`Resolution`,`Time`) 
FROM Cases; 

爲了調試,我添加了TIMEDIFF沒有前一小時,只是爲了看看結果是不同的。我使用datediff來複查。

查詢的結果是:

+---------------------+---------------------+-------------------------------------+-------------------------------+-------------------------------+ 
| Time    | Resolution   | HOUR(TIMEDIFF(`Resolution`,`Time`)) | TIMEDIFF(`Resolution`,`Time`) | datediff(`Resolution`,`Time`) | 
+---------------------+---------------------+-------------------------------------+-------------------------------+-------------------------------+ 
| 2017-01-10 13:35:00 | 2017-01-24 10:52:00 |         333 | 333:17:00      |       14 | 
| 2017-01-12 15:53:00 | 2017-02-21 16:06:00 |         838 | 838:59:59      |       40 | 
| 2017-01-18 09:19:00 | 2017-01-18 13:39:00 |         4 | 04:20:00      |        0 | 
| 2017-01-23 09:00:00 | 2017-01-23 15:08:00 |         6 | 06:08:00      |        0 | 
| 2017-01-24 08:49:00 | 2017-02-20 14:34:00 |         653 | 653:45:00      |       27 | 

實際上,它提供了更多的線條,但相關線是2的結果 - 838小時,轉化爲34.91天,比方說35,但DATEDIFF給40,當你自己計算它是40天! 1月12日至2月21日

其他21個結果是正確的。

任何想法爲什麼? MySQL中的錯誤? 所有回覆都非常感謝。

回答

2

使用

TIMESTAMPDIFF(HOUR,`Time`, `Resolution`) 

代替。

它也否定了使用HOUR()的需要。

https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_timestampdiff

通過TIMEDIFF()返回的結果被限制到允許TIME值的範圍內。 https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_timediff

TIME值的範圍可以從-838:59:59838:59:59https://dev.mysql.com/doc/refman/5.5/en/time.html

所以你得到了最大可能的價值。

+0

非常感謝。這有幫助。 – Slarti42

+0

如果這解決了你的問題,請點擊複選標記接受我的回答:) – inarilo

+0

完成了,再次感謝。 – Slarti42