2017-05-17 13 views
0

を1間違ったtimediffを与える:デバッグするためにmysqlのは、私は次のクエリ持っている20のうち、右

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

を、私は結果が異なる場合だけ見るために、前HOURなし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日です! 12月1日〜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値の許容範囲に制限されます。

TIMEの値は、-838:59:59から838:59:59までの範囲であってもよい。 https://dev.mysql.com/doc/refman/5.5/en/time.html

これで最大限の価値が得られます。

+0

ありがとうございます。それが助けになりました。 – Slarti42

+0

これで問題が解決した場合は、チェックマークをクリックして回答を受け入れてください:) – inarilo

+0

done、thanks again。 – Slarti42

関連する問題