我有一个表,列出了人们及其出生日期(目前是nvarchar(25))
如何将其转换为日期,然后以年为单位计算它们的年龄?
我的数据如下所示
ID Name DOB
1 John 1992-01-09 00:00:00
2 Sally 1959-05-20 00:00:00
我希望看到:
ID Name AGE DOB
1 John 17 1992-01-09 00:00:00
2 Sally 50 1959-05-20 00:00:00
发布于 2009-10-15 14:58:12
一定要把这个扔出去。如果您使用112样式(yyyymmdd)将日期convert为一个数字,则可以使用如下计算方式...
(yyyyMMdd - yyyyMMdd) / 10000 =全年差值
declare @as_of datetime, @bday datetime;
select @as_of = '2009/10/15', @bday = '1980/4/20'
select
Convert(Char(8),@as_of,112),
Convert(Char(8),@bday,112),
0 + Convert(Char(8),@as_of,112) - Convert(Char(8),@bday,112),
(0 + Convert(Char(8),@as_of,112) - Convert(Char(8),@bday,112)) / 10000
输出
20091015 19800420 290595 29
发布于 2009-10-15 13:07:50
我在我们的生产代码中使用这个查询已经将近10年了:
SELECT FLOOR((CAST (GetDate() AS INTEGER) - CAST(Date_of_birth AS INTEGER)) / 365.25) AS Age
发布于 2009-10-15 13:03:05
您需要考虑datediff命令的循环方式。
SELECT CASE WHEN dateadd(year, datediff (year, DOB, getdate()), DOB) > getdate()
THEN datediff(year, DOB, getdate()) - 1
ELSE datediff(year, DOB, getdate())
END as Age
FROM <table>
我是从here改编的。
请注意,对于非闰年,它将把2月28日视为小学生的生日,例如,2020年2月29日出生的人将在2021年2月28日被视为1岁,而不是2021年3月1日。
https://stackoverflow.com/questions/1572110
复制相似问题