首页 > 解决方案 > 将出生日期转换为当前年份

问题描述

我的员工档案有生日年份,目前不允许我在当年创建一个显示该生日的日历,除非我将年份转换为当前年份。我怎样才能进行这种转换?我尝试为月和日创建临时字段,然后尝试连接年月日以返回日期值。

  Declare @Year1 int = 2019;
  select dateadd(@year1,[year]-1900,dateadd(month(birthdate), 
  [month]-1,dateadd(day(birthdate),[day]-1,0)))
  from vhemployee where employerid<>1 and status=1

标签: sqldate

解决方案


你想多了。

使用DATEDIFF查找自 以来的年数birthdate,然后使用DATEADD将该年数添加到birthdate以获取他们今年的生日日期。

这里的 CTE 在过去只有三个随机日期来表示birthdate值。您需要的查询遵循 CTE。

WITH cte AS
(
  SELECT CAST(v.BD AS DATE) AS birthdate
  FROM (VALUES ('19641210'),('19830518'),('20010911')) AS v(BD)
)
SELECT DATEADD(YEAR,DATEDIFF(YEAR,cte.birthdate,GETDATE()),cte.birthdate) AS tybd
FROM cte

结果:

+------------+
|    tybd    |
+------------+
| 2019-12-10 |
| 2019-05-18 |
| 2019-09-11 |
+------------+

推荐阅读