示例数据:
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/