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
我有一张表格,其中我需要确定订单的起止日期是否介于TransferRequestDtm
和TransEndDate
之间。
我如何在SQL中执行此操作?我在别处读过我可以使用的
WHERE
(OrderStart '2016-06-01', OrderStop '2016-06-16')
重叠(TransferRequestDtm,TransEndDate),但这对我不起作用
答案 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;
如果您想比较TransferReuestDtm
和TransEndDate
应该在某个特定日期之间,那么您可以使用
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)