检查其他2个日期字段之间的日期字段

时间:2019-04-04 06:55:19

标签: sql tsql

我正在尝试检查某个日期是否在其他两个日期之间。但这似乎不起作用。

我创建了一个简单的case语句:

CASE
WHEN date1 BETWEEN date2 AND date3
THEN 'Yes'
ELSE 'No'
END 

但是它没有给我所有的时间,是的,我确定date2和date3之间有一些日期。我想念什么吗?

3 个答案:

答案 0 :(得分:3)

我希望> =和<=比两者之间的

CASE
WHEN date1>=date2 AND date1<=date3
THEN 'Yes'
ELSE 'No'
END 

答案 1 :(得分:2)

CASE的替代方法是IIF,但您仍进行相同的比较

 IIF(date1 between date2 AND date3, 'Yes', 'No')

或没有BETWEEN

IIF(date1 >= date2 AND date1 <= date3, 'Yes', 'No')

答案 2 :(得分:1)

美好的一天,

使用您提供的格式没有问题。不幸的是,由于没有阅读能力,并且由于您没有提供任何示例数据和要求的结果,因此我们不知道为什么"no all the time"的结果不适合您。您只需了解“ BETWEEN”的含义

以下是使用您提供的格式很好运行的完整示例

DROP TABLE IF EXISTS T
GO
CREATE TABLE T(
    id int,
    DT1 DATE,
    DT2 DATE,
    DT3 DATE
)

INSERT T(id, DT1, DT2, DT3) values 
(1,'2005-01-01','2001-01-01','2019-01-01'),
(2,'2000-01-01','2001-01-01','2019-01-01'),
(3,'2019-01-01','2019-01-01','2019-01-01')
GO

SELECT * FROM T
GO

SELECT 
    CASE
        WHEN DT1 BETWEEN DT2 AND DT3
        THEN 'Yes'
        ELSE 'No'
    END 
FROM T

您会注意到第一行的'2005-01-01'大于'2001-01-01'且小于'2019-01-01'=因此适合,结果为“ yes” < / p>

第二行的'2000-01-01'小于'2001-01-01'=因此不适合,结果为“否”

第三行的'2019-01-01'大于'2001-01-01'并且与'2019-01-01'相同的值=因此它适合并且结果为“ yes”

相关问题