小编典典

计算最近的工作日在Postgres

sql

我需要根据订单的要求交货日期来安排Postgres查询中的某些项目。因此,例如,该订单在星期一(例如20120319)有一个请求的交货,并且该订单需要在前一个工作日(20120316)进行准备。

关于最直接方法的想法?我愿意添加日期表。我认为有比使用大量case语句更好的方法:SELECT EXTRACT(DOW FROMTIMESTAMP‘2001-02-16 20:38:40’);


阅读 232

收藏
2021-03-23

共1个答案

小编典典

要拥有上一个工作日:

select max(s.a) as work_day
from (
    select s.a::date
    from generate_series('2012-01-02'::date, '2050-12-31', '1 day') s(a)
    where extract(dow from s.a) between 1 and 5
    except
    select holiday_date
    from holiday_table
    ) s
where s.a < '2012-03-19'
;

如果要下一个工作日,只需反转查询即可。

2021-03-23