MySQL 检查日期范围是不是在日期范围内

Posted

技术标签:

【中文标题】MySQL 检查日期范围是不是在日期范围内【英文标题】:MySQL Check if date range is in date rangeMySQL 检查日期范围是否在日期范围内 【发布时间】:2015-04-19 09:20:17 【问题描述】:

在为小型预订系统进行 SQL 查询时遇到问题,我有一个包含两个条目的表,其中包含两个不同的日期和一个数字。

Nr    DateFrom      DateTo
----------------------------
1    2015-01-01   2015-01-03
2    2015-01-05   2015-01-08

我想查询我可以在哪里输入两个不同的日期,并且只返回表格中与输入的日期范围不冲突的日期范围的编号。

例如,如果我输入日期 2015-01-02 和 2015-01-04,它将返回 Nr 2 和 2015-01-05 和 2015-01-08 将返回 Nr 1。

【问题讨论】:

【参考方案1】:
SELECT *
FROM yourTable
WHERE DateFrom > @rangeEnd OR DateTo < @rangeBegin

DEMO

【讨论】:

谢谢!但现在的问题是输入范围 2015-01-01 到 2015-01-04 会返回 Nr 1,这是我不希望这样做的。 不,它没有。请参阅我刚刚添加的 sqlfiddle 演示。【参考方案2】:

我遇到了类似的问题。我使用这种类型的查询解决了。

SELECT * FROM yourTable WHERE (@rangeBegin <= DateFrom OR @rangeEnd >= DateTo) AND (@rangeBegin between DateFrom AND DateTo OR @rangeEnd between DateFrom AND DateTo)

【讨论】:

以上是关于MySQL 检查日期范围是不是在日期范围内的主要内容,如果未能解决你的问题,请参考以下文章

Java:检查当前日期是不是在特定日期范围内[重复]

检查输入的日期时间是不是在 2 个日期时间值的范围内

检查一个表中的日期是不是出现在 Access 中另一个表的范围内

检查日期是不是在 sql 中的日期范围之间(不检查年份)

ORACLE SQL - 如何检查时间是不是在特定范围内?

自定义验证规则,检查日期范围是不是已经被占用