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. 求大神帮我看看是哪里写错了 感谢细心解答2. javascript - 数组原声方法中的一段代码3. html - eclipse 标签错误4. php自学从哪里开始?5. python - from ..xxxx import xxxx到底是什么意思呢?6. 网页爬虫 - python爬虫翻页问题,请问各位大神我这段代码怎样翻页,还有价格要登陆后才能看到,应该怎么解决7. 数据库 - MySQL 单表500W+数据,查询超时,如何优化呢?8. javascript - JS设置Video视频对象的currentTime时出现了问题,IE,Edge,火狐,都可以设置,反而chrom却...9. phpstady在win10上运行10. github - 利用Python 自动化部署问题
