解决 MySQL 使用 BETWEEN AND 处理时间区间不包括右边界问题

原文地址:解决 MySQL 使用 BETWEEN AND 处理时间区间不包括右边界问题

问题描述

在 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 则不会出现上述问题。

posted @ 2021-01-15 04:22  lanweihong  阅读(1504)  评论(0)    收藏  举报