sql - EDATE 在 SQL Server 中可比?-- 下一个周年日期计算
问题描述
有人可以帮我找出一个在 SQL Server 中使用的公式,类似于下面粘贴的 Excel 公式吗?
=EDATE(日期,(DATEDIF(日期,TODAY(),"y")+1)*12)
我想捕捉下一个周年纪念日。
ID, Date, Next Anniversary
123, 01/12/20, 01/12/21
234, 05/25/17, 05/25/20
我掌握的信息是身份证和日期。我想确定下一个周年纪念日。
解决方案
如果生成的日期小于当前日期,您似乎可以很容易地使用DATEADD
andDATEDIFF
和一个表达式来实现这一点: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);
推荐阅读
- javascript - 在迭代期间忽略数组中的属性
- assembly - MIPS 我如何处理前一个 ALU 指令上的分支而不停止?
- ios - Xamarin.ios:应用程序中未加载图像资产目录
- python - 如何正确地将线放在 seaborn 箱线图的顶部?
- php - 从 url 获取两个字段并将它们转换为变量以查询搜索
- javascript - 如何从表格单元格中获取值
- bash - 如何使用 Docker 获取入口点脚本?
- android - 在我们上线 android 后,使用 Paypal sdk 的付款不起作用
- python - Heroku 图像分辨率
- powerbi - 用于 OR 逻辑的嵌套 IF 函数