AgeCalendar日期时间字段问题

时间:2016-10-18 14:50:02

标签: datetime sql-server-2012 calendar conditional-statements case-when

对于我的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 ......不管没有匹配的时间?

1 个答案:

答案 0 :(得分:1)

CASTCONVERT作为日期忽略时间。

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