我正试图从Postgres数据库中提取一些数据来实现生日提醒系统,但在让查询正常工作时遇到了一些困难。基本上,我想把生日字段在一个月内的所有记录都拉出来。我尝试了以下查询:

SELECT *
ALL persons
WHERE EXTRACT(MONTH from birthday) >= 9
AND EXTRACT(DAY from birthday) >= 15
INTERSECT
SELECT *
ALL persons
WHERE EXTRACT(MONTH from birthday) <= 10
AND EXTRACT(DAY from birthday) <= 15

查询的第一部分(在INTERSECT之前)似乎按我所希望的方式工作,但第二部分不包括15号之前任何月份的日期。例如,如果生日是9/20,第一部分将包括它,但第二部分将不包括它,因为它是在第15天之后(即使它仍然在10/15之前)。有什么办法补救吗?

最佳答案

这应该有效:

SELECT *
FROM persons
WHERE
    EXTRACT(MONTH FROM age(CURRENT_DATE, birthday)) = 11; -- less than one month the next birthday

编辑:错误已修复

关于sql - 从Postgres中提取小于mm-dd的所有年份的日期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11964425/

10-15 20:45