经测试 mysql 的 between and 是 左闭右闭 的,用于查询某一天数据的写法

本文详细解析了MySQL中BETWEEN操作符的正确使用方法,强调其为左闭右闭区间,即包括开始和结束值。文章通过具体示例说明如何精确查询某一天内的记录,并提醒避免常见错误,如日期格式不规范或区间定义不当导致数据查询偏差。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

经测试 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值