0

我需要帮助进行查询,该查询将从表中返回所有人当前为 25 岁且出生日期在 2 个月内(​​一个月中的任何时间)的结果。

我目前的查询是:

SELECT * from account_info 
where to_char(SYSDATE,'YYYY')-to_char(birth_date,'YYYY') = 25
AND Months_between(TO_DATE(SYSDATE),TO_DATE(birth_date)) = 2

数据库中birth_date的格式为11-NOV-87

这没有返回我需要的正确月份,因为这也在计算年份,结果是 297 个月。我之前使用的是:

AND abs(to_char(SYSDATE,'MM')-to_char(birth_date,'MM')) = 2`

这显示了正确的结果,但我不确定如果当前SYSDATE = Decemberbirth_date = February.

如何使用正确的日期计算仅返回当前 25 岁且其生日距 SYSDATE 2 个月的人?

4

2 回答 2

1

尝试:

WHERE months_between(trunc(sysdate,'mm'),trunc(birth_date,'mm'))=310

编辑 将月数从 298 更正为 310(计算 24 转 25 而不是 25 转 26)。

于 2013-09-17T16:35:34.057 回答
1

解决方案:

SELECT * from account_info
WHERE to_char(SYSDATE,'YYYY')-to_char(birth_date,'YYYY') = 25 AND to_char(add_months(TRUNC(SYSDATE), 2),'MM') = to_char(birth_date,'MM');

add_months 会将 2 加到当前的 sysdate 月份,并将该值与birth_date 进行比较。

于 2013-09-17T19:42:46.353 回答