我有一个Postgres9.1数据库,可以从表(appts)中选择以下约会日期:
id | apptdate
---|-----------
1 | 2017-05-01
2 | 2017-05-07
3 | 2017-05-14
4 | 2017-05-21
5 | 2017-05-28
我正试图从这个名单上取消下一个约会。
如果
current_date
是2017-05-05,我希望结果是2017-05-07。如果
current_date
早于最后一个apptdate
,则此操作有效:SELECT apptdate FROM appts WHERE apptdate >= current_date
ORDER BY apptdate
LIMIT 1
但是,如果
current_date
在最后一个apptdate
之后,我想选择最后一个apptdate
。在上面的例子中,如果
current_date
是2017-06-15,我希望结果是2017-05-28。 最佳答案
select apptdate
from (
(
select apptdate
from appts
where apptdate >= current_date
order by apptdate
limit 1
)
union all
select max(apptdate)
from appts
) s
order by apptdate
limit 1
关于postgresql - 试图从日期列表中提取下一个约会,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43872620/