经测试 mysql 的 between and 是 左闭右闭 的,也就是包括查询的 开始值 和 结束值。
所以用 mysql 的 between and 查询某一天的记录,应该写成:
SELECT * from time_table ta
where ta.CREATE_TIME
between '2019-03-01 00:00:00'
and '2019-03-01 23:59:59'
左闭右闭,那就还可以写成:
where ta.CREATE_TIME >= '2019-03-01 00:00:00'
and ta.CREATE_TIME <= '2019-03-01 23:59:59'
不能写成:
SELECT * from time_table ta
where ta.CREATE_TIME
between '2019-03-01 00:00:00'
and '2019-03-02 00:00:00'
也不能写成:
SELECT * from time_table ta
where ta.CREATE_TIME
between '2019-03-01'
and DATE_ADD('2019-03-01', INTERVAL 1 DAY); // DATE_ADD 天数增加1
因为如果数据库里有 2019-03-02 00:00:00 这个时刻的记录,那也会被一起查出来,
那结果就是 03-01 和 03-02 两天的数据了。
另外要注意 ‘00:00:00’ ,在查询时不要写成 ‘24:00:00’,会出问题。
这个问题参考: https://www.cnblogs.com/lj312/p/7238211.html
还有日期字符串的格式要符合 yyyy-MM-dd HH:mm:ss,否则查询可能会出问题。
如写成 '2009-12-1 10:5:5' 这样格式的字符串, 查询就可能会出问题。
这个问题参考: https://qhuwn.iteye.com/blog/544338