将出生日期转换为当前年份

时间:2019-04-11 18:12:20

标签: sql date

我的雇员文件中有生日日期年份,除非我将年份转换为当前年份,否则当前不允许我在当年创建日历以显示该生日日期。我该如何进行转换? 我尝试为Month&day创建临时字段,然后尝试将年月日连接起来以返回日期值。

  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

2 个答案:

答案 0 :(得分:2)

您想得太多。

使用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 |
+------------+

答案 1 :(得分:0)

可能最简单的方法是使用SQL Server中的DateFromParts函数。

声明@Year Int = 2019

选择DATEFROMPARTS(@年,月(生日),日(生日)) 来自VhEmployee Employerid <> 1 AND [状态] = 1

相关问题