H5W3
当前位置:H5W3 > 其他技术问题 > 正文

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

问题描述

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

1
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-042020-08-10
  2. 将右边界时间精确到秒,如 2020-08-042020-08-09 23:59:59

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

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

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址