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
相关产品推荐
相关产品推荐

