mysql 时间类型 字段(精确到时分秒) 怎么比较?
问题描述
我需要根据create_time字段来筛选数据,现在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’)

但是,我发现这种方法由个bug, 就是,当上限时间(上图箭头)过大的时候,会报错。如下图:
原因是,unix_timestamp函数,将时间转化为秒,时间不能太大。
问题:是否还有其他什么更好的方法来筛选时间? 这种问题一般是怎么解决的?请大神赐教,感激不尽……
问题解答
回答1:UNIX_TIMESTAMP返回的是INTEGER而不是BIGINT,所以不能超过2038年(又一说2106年)。
为什么不试试 create_time BETWEEN ’2016-05-25 14:07:56 AND ’2017-05-25 14:07:56’ 呢?
另外,如果追求计算的便捷性,建议时间列类型设为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’
相关文章:
1. Apache 已经把网站根目录的改为allow from all了,但是服务器还是不能访问?2. gulp-ruby-sass编译出来的文件有错3. 使用 CSS3 的 Media Query 浏览器会加载其他不同分辨率的 css 文件么4. “Webdrivers”可执行文件可能具有错误的权限请参阅https://sites.google.com/a/chromium.org/chromedriver/home5. php-_server-php_self - nginx $_SERVER[’PHP_SELF’] 得到重复路径是什么原因?6. 前端 - 类到底该如何去命名 .newsList 这种的命名难道真的不是过度语义化吗?~7. 数据挖掘 - 如何用python实现《多社交网络的影响力最大化问题分析》中的算法?8. node.js通过module.exprots返回的是promise对象而非data?9. html - 开发android的调取我web页面 他之前用的是收费的浏览器包 显示是全的换了免费的浏览器包后 显示就不全 是什么原因啊10. javascript - 给js写的盒子添加css样式,css样式没起作用。

网公网安备