我正在尝试检查某个日期是否在其他两个日期之间。但这似乎不起作用。
我创建了一个简单的case语句:
CASE
WHEN date1 BETWEEN date2 AND date3
THEN 'Yes'
ELSE 'No'
END
但是它没有给我所有的时间,是的,我确定date2和date3之间有一些日期。我想念什么吗?
答案 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”