sql - 将出生日期转换为当前年份
问题描述
我的员工档案有生日年份,目前不允许我在当年创建一个显示该生日的日历,除非我将年份转换为当前年份。我怎样才能进行这种转换?我尝试为月和日创建临时字段,然后尝试连接年月日以返回日期值。
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
解决方案
你想多了。
使用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 |
+------------+
推荐阅读
- python-3.x - 使用“已满足要求”安装 Pygame
- c - 在c中使用文件和循环
- r - 在gganimate中将动画条形图条上的标签四舍五入?
- javascript - 为什么我无法从其他文件访问 express 服务器?
- java - Java Ring of Fire 饮酒游戏
- html - HTML 表格属性
- security - 我可以阻止与 webpack 捆绑的 node_modules 使用 window.postMessage 吗?
- r - glsEstimate(object, control = control) 中的错误:计算的“gls”拟合是奇异的,排名 19
- performance - 在 v- 中调用一个巨大的对象导致巨大的延迟?
- firebase - 云功能错误:禁止,除非我向所有用户打开功能