Dus*_*tin 6 sql postgresql date
我需要根据订单的请求交货日期在postgres查询中安排一些项目.因此,例如,订单在星期一(例如20120319)具有请求的交货,并且订单需要在前一个工作日(20120316)准备.
关于最直接方法的想法?我愿意添加日期表.我认为必须有一个比一长串案例陈述更好的方法:SELECT EXTRACT(DOW FROM TIMESTAMP'2001-02-16 20:38:40');
这可以让你前一个工作日.
SELECT
CASE (EXTRACT(ISODOW FROM current_date)::integer) % 7
WHEN 1 THEN current_date-3
WHEN 0 THEN current_date-2
ELSE current_date-1
END AS previous_business_day
Run Code Online (Sandbox Code Playgroud)
要有上一个工作日:
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'
;
Run Code Online (Sandbox Code Playgroud)
如果您想要下一个工作日,只需反转查询.
| 归档时间: |
|
| 查看次数: |
6121 次 |
| 最近记录: |