结论:
Mysql数据库中的between and查询是包含右边界的,但如果字段是datetime类,数据格式则会被转换为:2018-10-01 00:00:00,那么2018-10-01当天的数据就查询不到,所以就会出现不包含右边界的这种问题,而数据类型本身是date则不会出现上述问题。
举例:
在Mysql中有如下select语句:
SELECT * FROM userinfo WHERE xm='xiaoming' and datetime BETWEEN'2020-01-01' and '2020-01-31'
上面这种写法 查询出来的数据并不会包括 2020-1-31 日的数据,因为MySQL对日期的查询是默认“00:00:00”,所以上面的时间区间实际为:2020-01-01:00:00:00——2020-01-31:00:00:00,31日当天的数据是不在区间内的,所以查询不到。
解决方法:
1,把日期往后推一天,2018-10-01——2018-11-01
2,把右边界的时间精确到边界,2018-10-01——2018-10-31 23:59:59
补充:
以上问题只会在字段类型为‘DateTime’中会出现,MySQL本身是包含右边界的,如果是datetime,数据格式则会被转换为:2018-10-01 00:00:00,数据类型本身是date则不会出现上述问题。