gpt4 book ai didi

sql - 检查 SQL 中的日期是否重叠

转载 作者:行者123 更新时间:2023-12-02 21:14:56 25 4
gpt4 key购买 nike

我有一个表 tblBranchTimingEntry

+---------------+-------------------------+-------------------------+------------------+
| BranchEntryID | fromDate | toDate | SundayIn |
+---------------+-------------------------+-------------------------+------------------+
| 24 | 2015-01-01 00:00:00.000 | 2015-01-31 00:00:00.000 | 12:00:00.0000000 |
| 24 | 2015-02-01 00:00:00.000 | 2015-02-15 00:00:00.000 | 12:00:00.0000000 |
| 24 | 2015-03-01 00:00:00.000 | 2015-03-31 00:00:00.000 | 00:00:00.0000000 |
| 24 | 2014-01-01 00:00:00.000 | 2014-12-31 00:00:00.000 | 00:00:00.0000000 |
+---------------+-------------------------+-------------------------+------------------+
<小时/>

要求

我正在提供输入 BranchEntryID、fromDate、toDate,我想检查 fromDate 和 toDate 之间的任何日期是否与 tblBranchTimingEntry 中存储的日期范围重叠。

<小时/>

到目前为止我做了什么

我有这个查询

SELECT 
*
FROM
[dbo].[tblBranchTimingEntry]

WHERE
BranchEntryId = 24
AND
('2015-01-14' BETWEEN fromDate AND toDate OR '2015-02-28' BETWEEN fromDate AND toDate)

这将检查重叠。

<小时/>

问题

仅当输入日期位于数据库中存在的日期之间时,此功能才有效。在此示例中这将失败。

假设我将 fromdate 和 todate 指定为“2015-02-16”和“2015-08-27”,该查询不会返回任何内容。但这些日期之间存在重叠的日期。

有什么解决办法吗?

最佳答案

尝试这个逻辑:

SELECT te.* 
FROM [dbo].[tblBranchTimingEntry] te
WHERE BranchEntryId = 24 AND
'2015-01-14' < toDate AND
'2015-02-28' > fromDate;

根据您所说的“重叠”的含义,可能是 <=和/或 >= .

逻辑是:两个日期范围重叠,第一个日期范围在第二个日期范围结束之前开始,第一个日期范围在第二个日期范围开始之后结束。

关于sql - 检查 SQL 中的日期是否重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28673310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com