2016-10-18 73 views
1

对于我AgingCalendar场,我有3个条件,使用CASE WHEN:AgeCalendar日期时间字段问题

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

CASTCONVERT他们作为日期忽略的时间。

WHEN CONVERT(DATE, A.[END_DTTM]) = CONVERT(DATE, A.[STRT_DTTM]) THEN 1

WHEN CAST(A.[END_DTTM] AS DATE) = CAST(A.[STRT_DTTM] AS DATE) THEN 1

+0

我知道它一定很简单,但画的是空白。谢谢@scsimon。 – smul86

+0

不用担心@ smul86 – scsimon