订单在停止和开始日期之间的日期

时间:2016-06-16 19:21:27

标签: sql sql-server

Visitid LocationName    TransferRequestDtm        TransEndDate
-------------------------------------------------------------------------
296459  Waiting         2016-06-04 22:53:46.000   2016-06-04 23:01:30.650
296459  ED-22           2016-06-04 23:01:30.650   2016-06-05 01:16:00.000
296459  CCS-CC28-A      2016-06-05 01:16:00.000   2016-06-14 06:26:35.000
296459  4N-N450-A       2016-06-14 06:26:35.000   2016-06-14 06:33:41.530
296459  4N-N450-A       2016-06-14 06:33:41.530   2016-06-16 11:51:44.443

我有一张表格,其中我需要确定订单的起止日期是否介于TransferRequestDtmTransEndDate之间。

我如何在SQL中执行此操作?我在别处读过我可以使用的

WHERE 
    (OrderStart '2016-06-01', OrderStop '2016-06-16') 

重叠(TransferRequestDtm,TransEndDate),但这对我不起作用

2 个答案:

答案 0 :(得分:0)

我只想把逻辑写成:

where OrderStart <= TransEndDate and OrderStop >= TransferRequestDtm

但是,我不知道日期常量字符串在查询中做了什么。

注意这会实现部分重叠,这似乎是你要求的。

答案 1 :(得分:0)

您可以尝试以下查询

SELECT * 
FROM TableName 
WHERE TransferRequestDtm >= '2013-01-03' 
  AND TransEndDate <= '2013-01-09'

或者您也可以尝试

SELECT * 
FROM TableName 
WHERE TransferRequestDtm BETWEEN TransferRequestDtm AND TransEndDate;

如果您想比较TransferReuestDtmTransEndDate应该在某个特定日期之间,那么您可以使用

DECLARE @FrmDt DATETIME, @ToDt DATETIME
SELECT @FrmDt='2016-01-03', @ToDt='2016-01-09'

SELECT * 
FROM TableName
WHERE (@FrmDt BETWEEN TransferReuestDtm AND TransEndDate) OR 
    (@ToDt BETWEEN TransferReuestDtm AND TransEndDate)