mysql 時(shí)間類型 字段(精確到時(shí)分秒) 怎么比較?
問(wèn)題描述
我需要根據(jù)create_time字段來(lái)篩選數(shù)據(jù),現(xiàn)在sql 語(yǔ)句如下:
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)這種方法由個(gè)bug, 就是,當(dāng)上限時(shí)間(上圖箭頭)過(guò)大的時(shí)候,會(huì)報(bào)錯(cuò)。如下圖:
原因是,unix_timestamp函數(shù),將時(shí)間轉(zhuǎn)化為秒,時(shí)間不能太大。
問(wèn)題:是否還有其他什么更好的方法來(lái)篩選時(shí)間? 這種問(wèn)題一般是怎么解決的?請(qǐng)大神賜教,感激不盡……
問(wèn)題解答
回答1:UNIX_TIMESTAMP返回的是INTEGER而不是BIGINT,所以不能超過(guò)2038年(又一說(shuō)2106年)。
為什么不試試 create_time BETWEEN ’2016-05-25 14:07:56 AND ’2017-05-25 14:07:56’ 呢?
另外,如果追求計(jì)算的便捷性,建議時(shí)間列類型設(shè)為BIGINT,存放以毫秒為單位的Unix時(shí)間戳,這樣就不會(huì)有2038問(wèn)題了。
回答2:create_time BETWEEN ’2016-05-25 14:07:56’ AND ’2017-05-25 14:07:56’
如果加上毫秒的話,注意用冒號(hào):,
create_time BETWEEN ’2016-05-25 14:07:56:000’ AND ’2017-05-25 14:07:56:000’
相關(guān)文章:
1. 注冊(cè)賬戶文字不能左右分離2. JavaScript事件3. html5 - ElementUI table中el-table-column怎么設(shè)置百分比顯示。4. javascript - table列過(guò)多,有什么插件可以提供列排序和選擇顯示列的功能5. python - 使用readlines()方法讀取文件內(nèi)容后,再用for循環(huán)遍歷文件與變量匹配時(shí)出現(xiàn)疑難?6. javascript - ES6標(biāo)準(zhǔn)入門中l(wèi)et命令提到的for循環(huán)打印i是10,如果不用let怎么替換?7. showpassword里的this 是什么意思?代表哪個(gè)元素8. 對(duì)mysql某個(gè)字段監(jiān)控的功能9. python - 為什么正常輸出中文沒(méi)有亂碼,zip函數(shù)之后出現(xiàn)中文編程unicode編碼的問(wèn)題,我是遍歷輸出的啊。10. html - vue項(xiàng)目中用到了elementUI問(wèn)題
