2

我正在尝试从 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 之前)。任何想法如何解决这个问题?

4

3 回答 3

2

这应该有效:

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

编辑:错误修复

于 2012-08-15T05:32:11.987 回答
2

此查询输出距离生日不到一个月的人:

select * from persons where EXTRACT(MONTH FROM age(birthday))=0

如果你想输出前一个月和后一个月的生日:

select * from persons where EXTRACT(MONTH FROM age(birthday)) in (0,11)
于 2012-08-15T06:58:11.720 回答
0

从 '2012-09-15' 和 '2012-10-15' 之间生日的人中选择 * 怎么样

于 2012-08-15T17:25:24.867 回答