【关于MySQL查询日期区间的隐藏问题】MySQL根据日期查询数据不对

问题描述:

假设一个表中有如下数据:

查询2018-08-17到2018-08-19的数据,正确答案显而易见是5条

但如果使用下面两个sql语句,你会看到不同的结果:

第一种:SELECT * from date_test WHERE test_date >= '2018-08-17' AND test_date <= '2018-08-19'

第二种:SELECT * from date_test WHERE test_date >= '2018-08-17 00:00:00' AND test_date <= '2018-08-19 23:59:59'

发现了吧,当查询时间精确到时分秒的时候,“<=”后面的日期的数据就能够显示出来了

原因:

如上图所示,因为在Mysql中,datetime格式是精确到时分秒的,如果没有填写,默认为“00:00:00”,这个在表中id=1和id=2的数据中就可以看出来(我在插入数据的时候,故意没有删除了具体时间,点击提交之后,自动补充为了00:00:00)

所以,第一种方法相当于查看了17号00:00:00到19号00:00:00的数据

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值