我有一列数据类型为yyyymm的整数(例如201905)。我想检查此列是否在开始日期和结束日期之间:
case
when [cov_yyyymm] between [start_dt] and [end_dt] then 'Period1'
else 'OtherPeriod'
end
注意:开始和结束日期是日期时间
我尝试将Int转换为datetime / date。从日期到int,反之亦然,仍然无法正常工作。
我希望使用CASE语句来比较Integer是否在2个日期之间。
答案 0 :(得分:3)
您可以像这样将其转换为日期时间:
SELECT CAST(CAST(201905 AS VARCHAR(6)) + '01' AS DATETIME)
并与datetime列进行比较,例如:
WHERE CAST(CAST(201905 AS VARCHAR(6)) + '01' AS DATETIME) BETWEEN start_dt AND end_dt
答案 1 :(得分:0)
您的期间为yyyymm
格式,因此下一条语句是另一种可能的方法。当期间和日期都来自一个月(例如期间201905
以及日期2019-05-03
和2019-05-20
)时,此方法很有用。将一天(每月的第一天或最后一天)添加到整数周期(yyymm)并与datetime值进行比较并不总是正确的。
case
when [cov_yyyymm] between
(YEAR([start_dt])*100 + MONTH([start_dt])) and
(YEAR([end_dt])*100 + MONTH([end_dt])) then 'Period1'
else 'OtherPeriod'
end