问题描述

在 Mysql 中使用 between and 根据时间来查询时不包含右边界数据,例如

SELECT * FROM log_info WHERE add_time BETWEEN '2020-08-04' and '2020-08-09'

查询出来的数据并不会包含 2020-08-09 的数据,因为 Mysql 对日期的查询是默认 00:00:00,所以上面的时间实际是:2020-08-04 00:00:002020-08-09 00:00:002020-08-09 当天的数据不在区间内,所以查询不到。

解决方法

  1. 将右边界日期往后推一天,如 2020-08-04 - 2020-08-10
  2. 将右边界时间精确到秒,如 2020-08-04 - 2020-08-09 23:59:59

以上问题只会在字段类型为 datetime 中出现,Mysql 本身是包含边界的,但如果字段类型为 datetime 时,数据将会被转换为 2020-08-04 00:00:00,而数据类型为 date 则不会出现上述问题。

文章目录