问题描述:
假设一个表中有如下数据:
查询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的数据