将存储为整数的日期与日期时间进行比较
Compare date stored as an integer with a datetime
我有一个数据类型为整数的列,格式为 yyyymm(例如 201905)。我想检查此列是否在开始日期和结束日期之间,即:
case
when [cov_yyyymm] between [start_dt] and [end_dt] then 'Period1'
else 'OtherPeriod'
end
注意:开始和结束日期是日期时间
我试过将 Int 转换为 datetime/date。同样,从日期到整数,反之亦然,但仍然无法正常工作。
我希望使用 CASE 语句来比较整数是否在两个日期之间。
您可以像这样将其转换为日期时间:
SELECT CAST(CAST(201905 AS VARCHAR(6)) + '01' AS DATETIME)
并像这样与日期时间列进行比较:
WHERE CAST(CAST(201905 AS VARCHAR(6)) + '01' AS DATETIME) BETWEEN start_dt AND end_dt
您的经期采用 yyyymm
格式,因此下一条语句是另一种可能的方法。当时间段和日期来自一个月时,这种方法很有用——比如时间段 201905
和日期 2019-05-03
和 2019-05-20
。将一天(一个月的第一天或最后一天)添加到整数期间 (yyymm) 并与日期时间值进行比较并不总是正确的。
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
我有一个数据类型为整数的列,格式为 yyyymm(例如 201905)。我想检查此列是否在开始日期和结束日期之间,即:
case
when [cov_yyyymm] between [start_dt] and [end_dt] then 'Period1'
else 'OtherPeriod'
end
注意:开始和结束日期是日期时间
我试过将 Int 转换为 datetime/date。同样,从日期到整数,反之亦然,但仍然无法正常工作。
我希望使用 CASE 语句来比较整数是否在两个日期之间。
您可以像这样将其转换为日期时间:
SELECT CAST(CAST(201905 AS VARCHAR(6)) + '01' AS DATETIME)
并像这样与日期时间列进行比较:
WHERE CAST(CAST(201905 AS VARCHAR(6)) + '01' AS DATETIME) BETWEEN start_dt AND end_dt
您的经期采用 yyyymm
格式,因此下一条语句是另一种可能的方法。当时间段和日期来自一个月时,这种方法很有用——比如时间段 201905
和日期 2019-05-03
和 2019-05-20
。将一天(一个月的第一天或最后一天)添加到整数期间 (yyymm) 并与日期时间值进行比较并不总是正确的。
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