我的雇员文件中有生日日期年份,除非我将年份转换为当前年份,否则当前不允许我在当年创建日历以显示该生日日期。我该如何进行转换? 我尝试为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
答案 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