You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL多日期区间查询返回空值问题求助

问题解决:查询两个日期区间的数据

你的查询语句返回空值的核心原因是逻辑矛盾:你用AND同时要求OrderDate既落在1996-07-04至1996-07-08区间,又落在1996-07-15至1996-07-18区间——这两个区间没有重叠,没有任何日期能同时满足这两个条件,所以自然查不到数据。

正确的查询写法

你需要用OR来分隔两个独立的日期区间条件,以下是两种可行的写法:

写法一:直接用>=和<=

SELECT * FROM Orders 
WHERE (OrderDate >= '1996-07-04' AND OrderDate <= '1996-07-08')
   OR (OrderDate >= '1996-07-15' AND OrderDate <= '1996-07-18');

写法二:用BETWEEN简化(等价于上面的逻辑)

SELECT * FROM Orders 
WHERE OrderDate BETWEEN '1996-07-04' AND '1996-07-08'
   OR OrderDate BETWEEN '1996-07-15' AND '1996-07-18';

额外注意事项

如果OrderDate字段包含时间部分(比如存储值为1996-07-08 16:30:00),那么OrderDate <= '1996-07-08'会过滤掉当天非0点的数据。这种情况下,建议把结束条件改为小于下一天的起始时间,确保包含区间内所有时间的数据:

SELECT * FROM Orders 
WHERE (OrderDate >= '1996-07-04' AND OrderDate < '1996-07-09')
   OR (OrderDate >= '1996-07-15' AND OrderDate < '1996-07-19');

内容的提问来源于stack exchange,提问作者Moshiur Rahman Tonmoy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 18:05:27