【发布时间】:2022-01-20 11:55:14
【问题描述】:
如何在案例声明中提取年度滚动日期差异?或者,如果有更好的方法可行。当 NXT 周年日期月份在当前月份之后时,我需要将日期滚动到下一年。我需要查看 2022 年即将到来的下一个周年纪念日。
例如:
以下是我正在使用的代码,它适用于本年度。
Declare @prevbiz as Date set @prevbiz = DateAdd(day,Case (Datepart(Weekday,Cast(GetDate() as Date)))
When 2 then -3
Else -1
End, Cast(GetDate() as Date));
DECLARE @prev12MONTHS AS DATE set @prev12MONTHS = DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) - 12, DAY(@enddate)-1)
SELECT
ANNUALREVIEWDATE
, 'NXT Anniversary Date' = CASE WHEN DATEADD(yy, DATEDIFF(yy, ANNUALREVIEWDATE, @prevbiz), ANNUALREVIEWDATE) <= @prev12MONTHS
THEN DATEADD(yy, DATEDIFF(yy, ANNUALREVIEWDATE, @prevbiz) -1, ANNUALREVIEWDATE)
ELSE DATEADD(yy, DATEDIFF(yy, ANNUALREVIEWDATE, @prevbiz), ANNUALREVIEWDATE)
END
FROM [table]
【问题讨论】:
-
因为您使用了图像?而不仅仅是这个问题 - 多个问题。你有太多的代表和经验,不知道图像不应该用于发布重要信息。真的 - 您在 dateadd 函数中使用“yy”而不是“year”付出了多少努力。
标签: sql sql-server