我有下表
[tblRegistration](
[FirstName] [nvarchar](100) NOT NULL,
[MiddleName] [nvarchar](100) NOT NULL,
[LastName] [nvarchar](100) NOT NULL,
[DateOfBirth] [date] NOT NULL,
[DateOfRegistration] [datetime] NOT NULL,
我的问题是:从表 tblRegistration 中选择年龄在 18 到 25 岁之间的所有记录。
谢谢!
最佳答案
一开始我以为DATEDIFF(YEAR, DateOfBirth, GETDATE())
就足以获得年份差异,但 SQL Server 仅计算两个年份数字的简单 int 减法,因此当询问 2016.12.31 和 2017.01.01 之间的差异时,它返回 1。
因此,此外,还必须计算月份和日期:
SELECT *
FROM
(
SELECT
*,
Age = DATEDIFF(yy, DateOfBirth, GETDATE()) -
IIF(DATEPART(m, DateOfBirth) < DATEPART(m, GETDATE()), 0,
IIF(DATEPART(m, DateOfBirth) > DATEPART(m, GETDATE()), 1,
IIF(DATEPART(d, DateOfBirth) > DATEPART(d, GETDATE()), 1, 0)))
FROM tblRegistration
) x
WHERE Age BETWEEN 18 AND 25
关于sql-server - 按年龄范围选择记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47901835/