对于我的AgingCalendar字段,我有3个条件使用CASE WHEN:
CASE WHEN A.[END_DTTM] > A.[STRT_DTTM] THEN C2.[DY_OF_CAL_NUM] - C1.[DY_OF_CAL_NUM]
WHEN A.[END_DTTM] IS NULL and A.[STRT_DTTM] IS NOT NULL THEN C3.[DY_OF_CAL_NUM] - C1.[DY_OF_CAL_NUM]
WHEN A.[END_DTTM] = A.[STRT_DTTM] THEN 1
END AS AgeCalendar
对于我的第三个条件,我试图基本上说当结束日期时间=开始日期时间时,日历天的年龄应该设置为1个日历日。
但是,在我引入的一些记录中,开始日期等于结束日期,但与每个日期时间相关的时间是不同的。发生这种情况时,这些记录在AgeCalendar字段中收到NULL。(例如,我可能有6/6/2014 0:00:00 = 6/6/2014 0:00:00,这将给我1。 ..但如果我有6/6/2014 0:00:00 = 6/6/2014 0:03:59(或类似的东西)......它会给我一个NULL值,因为它不匹配。 我怎样才能更新上面的代码,以便我基本上说当结束日期=开始日期,然后是1 ......不管没有匹配的时间?
答案 0 :(得分:1)
CAST
或CONVERT
作为日期忽略时间。
WHEN CONVERT(DATE, A.[END_DTTM]) = CONVERT(DATE, A.[STRT_DTTM]) THEN 1
OR
WHEN CAST(A.[END_DTTM] AS DATE) = CAST(A.[STRT_DTTM] AS DATE) THEN 1