SQL 案例表达式中的代码报告日期更改

Code reported date change in SQL case expression

CASE  
   WHEN CAST([SYS_Created_On] as time) >= CAST('16:00' as time) 
      THEN DATEADD(dd, 1, CAST([SYS_Created_On] AS DATE))
      ELSE CAST([SYS_Created_On] AS DATE)  
END AS [Reported Date],
CASE 
   WHEN CAST([resolved_at] as time) >= CAST('16:00' as time) 
      THEN DATEADD(dd, 1, AS([resolved_at] AS DATE)) 
      ELSE CAST([resolved_at] AS DATE) 
END AS [Resolved Date]

我每天下午 4 点后获取周一至周五的数据。如果报告日期是 4 点后的星期五,或者周六或周日的报告日期是星期一,有人可以帮我编写代码吗?

如果我没理解错的话, 如果收到数据且时间在 4:00 PM 之后,您需要将报告日期设为下周一, 要么 SYS_Created_On 是周六或周日 你需要获取星期一对应的日期

虽然有不同的方式更优雅(在代码更少的意义上),但以下内容更具描述性。

CASE  
    WHEN CAST([SYS_Created_On] as time) >= CAST('16:00' as time) and DATENAME(WEEKDAY,CAST([SYS_Created_On] AS DATE)) = 'Friday' 
      THEN DATEADD(dd, 3, CAST([SYS_Created_On] AS DATE))
    WHEN DATENAME(WEEKDAY,CAST([SYS_Created_On] AS DATE)) = 'Saturday' 
      THEN DATEADD(dd, 2, CAST([SYS_Created_On] AS DATE))
    WHEN DATENAME(WEEKDAY,CAST([SYS_Created_On] AS DATE)) = 'Sunday' 
      THEN DATEADD(dd, 1, CAST([SYS_Created_On] AS DATE))
    WHEN CAST([SYS_Created_On] as time) >= CAST('16:00' as time) 
      THEN DATEADD(dd, 1, CAST([SYS_Created_On] AS DATE))
      ELSE CAST([SYS_Created_On] AS DATE)  
END AS [Reported Date],