我需要根据订单的要求交货日期来安排Postgres查询中的某些项目。因此,例如,该订单在星期一(例如20120319)有一个请求的交货,并且该订单需要在前一个工作日(20120316)进行准备。
关于最直接方法的想法?我愿意添加日期表。我认为有比使用大量case语句更好的方法:SELECT EXTRACT(DOW FROMTIMESTAMP‘2001-02-16 20:38:40’);
要拥有上一个工作日:
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' ;
如果要下一个工作日,只需反转查询即可。