SQL查询以查找年龄低于某个值的人

SQL查询以查找年龄低于某个值的人,sql,db2,Sql,Db2,我正在尝试查找所有40岁以下的人,在查看文档后,我尝试了一个查询: SELECT p.FirstName, p.LastName FROM Person AS p WHERE 40 <= DATEDIFF(CURRENT DATE, p.DateOfBirth, 'YEAR'); 但我以前在DB2 SQL中见过DATEDIFF。您可以使用year函数: 选择p.FirstName,p.LastName 从作为p的人 其中年份(当前日期-出生日期)=当前日期-40年p.DateOfBirt

我正在尝试查找所有40岁以下的人,在查看文档后,我尝试了一个查询:

SELECT p.FirstName, p.LastName
FROM Person AS p
WHERE 40 <= DATEDIFF(CURRENT DATE, p.DateOfBirth, 'YEAR');

但我以前在DB2 SQL中见过DATEDIFF。

您可以使用
year
函数:

选择p.FirstName,p.LastName
从作为p的人

其中年份(当前日期-出生日期)<40
您可以使用
年份
功能:

选择p.FirstName,p.LastName
从作为p的人
其中年份(当前日期-出生日期)小于40年

SELECT p.FirstName, p.LastName
FROM Person AS p
WHERE  dateofbirth + 40 years >= current date
不到40年

SELECT p.FirstName, p.LastName
FROM Person AS p
WHERE  dateofbirth + 40 years >= current date

p.DateOfBirth>=当前日期-40年

p.DateOfBirth>=当前日期-40年

尝试不同的逻辑,而不是将出生日期与当前日期减去40年进行比较。一次计算,效率更高一种不同的逻辑将出生日期与当前日期减去40年进行比较。单次计算,效率更高,当您切换计算时效果更好:-)
WHERE date of birth>=当前日期-40年
,当您切换计算时效果更好:-)
WHERE date of birth>=当前日期-40年
年(当前日期-出生日期)<40警告,这可能会忽略任何指数,因为您正在搜索条件中的列上调用函数。year(当前日期-dateofbirth)<40警告,这可能会忽略任何索引,因为您正在搜索条件中的列上调用函数。