起因
業(yè)務(wù)中需要比對兩個日期的時間是否相等(例如 2017-07-06 20:00:00 與 2017-07-06 20:00:30 截取到分),出于好奇,想在 MySQL 中查詢語句做判斷。一搜,據(jù)各路大俠說在數(shù)據(jù)庫中做判斷比在 Java 中做判斷性能高,遂查找方法。
插曲
由于基礎(chǔ)不扎實,從 w3school 看到 SQL 的函數(shù) datediff(date1,date2)與datediff(minute,date1,date2),遂填參數(shù)測之,前者OK,后者GG,也不明原因,棄之。
正題
后找到 TIMESTAMPDIFF(unit,date1,date2) 函數(shù),先入為主地認為它的工作方式是如前例截取數(shù)據(jù)到分(2017-07-06 20:00)再比較,但使用之后發(fā)現(xiàn)在 2017-07-06 20:00 與 2017-07-06 20:01 的比較中竟然返回0 (TIMESTAMPDIFF(MINUTE,'2017-07-06 20:00:xx','2017-07-06 20:01:yy') = 0 )
于是就用 GUI 去測試了,測完之后發(fā)現(xiàn)自己原來想是錯的,0.0
它并不是通過截取到分之后再判斷兩個值是否相等,而是算兩個日期間隔的秒數(shù)是否小于一分鐘:
TIMESTAMPDIFF(MINUTE,'2017-07-06 20:00:30','2017-07-06 20:01:00') = 0 --- 間隔30秒
TIMESTAMPDIFF(MINUTE,'2017-07-06 20:00:30','2017-07-06 20:01:30') = 1 --- 間隔60秒
TIMESTAMPDIFF(MINUTE,'2017-07-06 20:00:30','2017-07-06 19:59:31') = 0 --- 間隔59秒
TIMESTAMPDIFF(MINUTE,'2017-07-06 20:00:30','2017-07-06 19:59:30') = 1 --- 間隔60秒
總結(jié)
干啥事都有先入為主的思想,但遇到事實與所想不一樣,多試驗探究事物的原理才是正途。加油。