Oracle SQL 如何计算出生日期是否在 SYSDATE 后的 2 个月内



我需要帮助进行查询,该查询将从表中返回结果,其中所有人当前为 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 个月的人?

尝试:

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

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

解决方案:

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 添加到当前系统日期月份,并将该值与birth_date进行比较。

最新更新