EDATE在SQL Server中可比吗? —下一个周年纪念日计算

问题描述 投票:-2回答:1

有人可以帮我找出类似于以下粘贴的Excel公式的SQL Server公式吗?

= EDATE(date,(DATEDIF(date,TODAY(),“ y”)+ 1)* 12)

我想记录下一个周年纪念日。

ID, Date, Next Anniversary
123, 01/12/20, 01/12/21
234, 05/25/17, 05/25/20

我所拥有的信息是ID和日期。我想确定下一个周年纪念日。

sql ssms datediff
1个回答
0
投票

似乎您可以使用DATEADDDATEDIFF以及CASE表达式(如果生成的日期小于当前日期,则很容易实现此目标:

SELECT YourDate,
       CASE WHEN V.NextDate < CONVERT(date,GETDATE()) THEN DATEADD(YEAR, 1, V.NextDate) ELSE V.NextDate END AS NextDate
FROM (VALUES(CONVERT(date,'20190101')), --This would actually be your table
            (CONVERT(date,'20170709')),
            (CONVERT(date,'20160229')), --Leap year
            (CONVERT(date,'20181219')))YT(YourDate)
     CROSS APPLY (VALUES(DATEADD(YEAR, DATEDIFF(YEAR, YT.YourDate, GETDATE()),YT.YourDate)))V(NextDate);
© www.soinside.com 2019 - 2024. All rights reserved.