我需要根据开始日期和持续时间计算作业的结束日期(表示工作日数的整数)。
我已经编写了一个基于this answer的函数,它计算两个日期(开始和虚拟结束)之间周末日的数量。
-- 0 Sunday
-- 1 Monday
-- 2 Tuesday
-- 3 Wednesday
-- 4 Thursday
-- 5 Friday
-- 6 Saturday
CREATE OR REPLACE FUNCTION weekend_days(date, date) RETURNS INT AS
$$
SELECT COUNT(days)::INT
FROM generate_series($1, $2, '1 day') AS days
WHERE EXTRACT(DOW FROM days) BETWEEN 1 AND 5;
$$
LANGUAGE 'sql' IMMUTABLE STRICT;
我想创建一个触发器ON INSERT或ON UPDATE,它将填充相应的end_date
列。
显然,将周末天数添加到给定的持续时间并不能解决问题。
有没有办法让递归函数继续添加周末或假期?
编辑:也许在this answer中可以找到另一个很好的例子,它将周末和假日混合在一起。
答案 0 :(得分:3)
body