我是Postgres的初学者,正在寻找一些有关查询问题的帮助。我想计算两个日期之间的工作日数(不包括sat& sun& holiday)。这就是我想要做的事情:
Select column1, column2, (current_date - defined_date) as elapsed_days
from mytable
where elapsed_days excludes sat, sun, and holidays
答案 0 :(得分:0)
create table calendar c as
(cal_date date primary key,
business_day boolean not null);
insert into calendar
(select
('01/01/1900'::date + (g||' days')::interval)::date,
case extract(dow from '01/01/1900'::date
+ (g||' days')::interval)
when 0 then false when 6 then false else true end
from generate_series(0,365*150) g)
现在你有一个日历表填充了周末设置为" business_day = false"所有其他日子都设置为真。
您必须手动填写其他假期或编写程序来执行此操作。
之后,要计算天数之间的差异,请执行以下操作:
select count(*) from cal
where cal between "start_date_var" and "end_date_var"
and business_day=true;
注意:如果是我,我会在您的日历表中添加一些其他列,以便它可以包含它的假期或其他类似的内容。甚至还有另一张假期表。这是一个好的开始。