如何编写查询以检查给定的日期时间是否介于其他两个日期时间跨度之间?

时间:2015-08-18 18:52:18

标签: sql ms-access

我正在使用MS-Access DB。

我正在尝试为Datetime编写查询。

我正在尝试检查两个日期之间新日期的可用性。

实施例。我已经创建了具有以下数据的记录 在批处理表中。

有四个字段......

BatchStartDate - 2015年9月1日

BatchStartTime - 上午11点

BatchEndDate - 2015年9月7日

BatchEndtime - 下午3点

现在,在添加另一批时,它不应该落入上述记录的日期时间范围,否则批次将发生冲突。

一次只能有一个批次。

实施例。

 The new batch should not be 1-Sept-2015 12 PM TO 7-Sept-2015  3 PM 

 The new batch should not be 1-Sept-2015 1 PM To 7-Sept-2015  4 PM 

 The new batch should not be 1-Sept-2015 2 PM To 7-Sept-2015  5 PM 

  The new batch should not be 3-Sept-2015 11 AM To 9-Sept-201 2 PM 

                       and So on...

表示将存在n个组合,这些组合属于第一个记录的两个日期。

但我应该在2015年9月1日下午3点05分到2015年9月7日下午7点,因为它没有发生冲突

现在,我想编写查询以检查新添加的记录是否应该落在第一个记录的日期时间范围内。

它不那么简单,因为在同一天不同的批次可以组织,所以Between子句或范围子句无济于事......

2 个答案:

答案 0 :(得分:0)

我现在没有sql server访问权限。所以只需检查语法。从逻辑上说它是正确的,就像我这样使用的那样。

SELCT * FROM **YOUR TABLE** 
(SELECT DATEDIFF(day,START-DATE,END-DATE) AS DiffDate)  
WHERE DiffDate<= **NUMBER OF DAYS YOU WANT**  

答案 1 :(得分:0)

您可以使用之间的子句:

SELECT * FROM <YOUR_TABLE>
WHERE <YOUR_DATE> BETWEEN <START_DATE> AND <END_DATE>;