mysql 時間類型 字段(精確到時分秒) 怎么比較?
問題描述
我需要根據(jù)create_time字段來篩選數(shù)據(jù),現(xiàn)在sql 語句如下:
SELECT * FROM `sbhf_alarm` sa WHEREunix_timestamp(sa.create_time) BETWEEN unix_timestamp(’2016-05-25 14:07:56’)AND unix_timestamp(’2017-05-25 14:07:56’)
但是,我發(fā)現(xiàn)這種方法由個bug, 就是,當(dāng)上限時間(上圖箭頭)過大的時候,會報錯。如下圖:
原因是,unix_timestamp函數(shù),將時間轉(zhuǎn)化為秒,時間不能太大。
問題:是否還有其他什么更好的方法來篩選時間? 這種問題一般是怎么解決的?請大神賜教,感激不盡……
問題解答
回答1:UNIX_TIMESTAMP返回的是INTEGER而不是BIGINT,所以不能超過2038年(又一說2106年)。
為什么不試試 create_time BETWEEN ’2016-05-25 14:07:56 AND ’2017-05-25 14:07:56’ 呢?
另外,如果追求計算的便捷性,建議時間列類型設(shè)為BIGINT,存放以毫秒為單位的Unix時間戳,這樣就不會有2038問題了。
回答2:create_time BETWEEN ’2016-05-25 14:07:56’ AND ’2017-05-25 14:07:56’
如果加上毫秒的話,注意用冒號:,
create_time BETWEEN ’2016-05-25 14:07:56:000’ AND ’2017-05-25 14:07:56:000’
相關(guān)文章:
1. docker api 開發(fā)的端口怎么獲取?2. 在windows下安裝docker Toolbox 啟動Docker Quickstart Terminal 失敗!3. angular.js - angularjs的自定義過濾器如何給文字加顏色?4. MySQL數(shù)據(jù)庫中文亂碼的原因5. docker gitlab 如何git clone?6. angular.js - 關(guān)于$apply()7. docker-compose 為何找不到配置文件?8. dockerfile - 我用docker build的時候出現(xiàn)下邊問題 麻煩幫我看一下9. mysql - 新浪微博中的關(guān)注功能是如何設(shè)計表結(jié)構(gòu)的?10. css - C#與java開發(fā)Windows程序哪個好?
