sql - 如何根据日期获得确切年龄

标签 sql sql-server tsql

示例数据:

DECLARE @T Table (ID INT,Name VARCHAR(10),DOB DATE)
INSERT INTO @T (ID,Name,DOB) VALUES (1,'Mohan','1937-12-30')
INSERT INTO @T (ID,Name,DOB) VALUES (2,'Raj','1937-12-25')
INSERT INTO @T (ID,Name,DOB) VALUES (5,'Manny','1937-01-30')
INSERT INTO @T (ID,Name,DOB) VALUES (3,'kamal','1938-12-12')
INSERT INTO @T (ID,Name,DOB) VALUES (4,'Raj','1937-05-12')

我的查询:

Select 
cast((DATEDIFF(m, DOB, GETDATE())/12) as varchar) + ' Y & ' + 
       cast((DATEDIFF(m, DOB, GETDATE())%12) as varchar) + ' M & ' +
       cast((DATEDIFF(D, DOB, GETDATE())%12) as varchar) + ' d'   as Age from @T

这将以 Years、months 和 Days 为单位给出结果。 但我的问题是如何仅在即将到来的 45 天内获得 79 岁的数据。 我很震惊你能给我建议吗

最佳答案

future 45 天内年满 79 岁的人:

SELECT * from @T where
DOB > DATEADD(year,-79,GETDATE()) and
DOB < DATEADD(year,-79,DATEADD(day,45,GETDATE()))

(调整 <<= 并可能使用额外的 DATEADD/DATEDIFF 如果您希望将 GETDATE() 舍入到午夜,以满足您的具体要求)

关于sql - 如何根据日期获得确切年龄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40481349/

相关文章:

php - 警告 : mysql_fetch_object(): supplied argument is not a valid MySQL result resource in ,

java - JPA:如何使用@ElementCollection 注解?

sql - 登录本地 SQL Server 失败

java - 如何在java中使用LinkedHashMap从sql server数据库填充下拉列表

asp.net - IDENTITY_INSERT 设置为关闭错误

sql-server-2008 - 在 SQL Server 中完成 MYSQL 的 Group_Concat

SQL 选择 *,但如果存在于另一个表中,则覆盖行的 'column value'

mysql - 最大日期组按月、年和 ID 的累计总和

sql - 如何每小时在sql server中运行一个存储过程?

sql-server - TSQL - Select 中的 While 循环?