一尘不染

MySQL的“ between”子句不包括在内?

mysql

如果我运行带有between子句的查询,它似乎排除了结束值。
例如:

select * from person where dob between '2011-01-01' and '2011-01-31'

dob从‘2011-01-01’到‘2011-01-30’的所有结果;跳过dob“ 2011-01-31”
所在的记录。谁能解释这个查询的行为方式,以及如何修改它以包含dob“ 2011-01-31”
所在的记录?(由于用户选择了结束日期,因此未在结束日期前加上1。)


阅读 455

收藏
2020-05-17

共1个答案

一尘不染

该字段dob可能具有时间成分。

截断它:

select * from person 
where CAST(dob AS DATE) between '2011-01-01' and '2011-01-31'
2020-05-17