Postgres中有没有一种方法可以生成跳过周末的每日报告?

时间:2020-06-26 08:12:35

标签: sql postgresql

更具体地说,

我有一个查询,该查询每天运行以进行报告。它使用昨天生成的数据,因此查询看起来像这样

where sp.create_timestamp between (current_date -1 ) AND (current_date)

但是,我想在星期一而不是星期日收集星期五的信息。有没有简单的方法可以忽略周末。

如果没有,我将不得不用Python写一些东西,我相信我可以在那做,但是我在SQL上找不到这样的功能

1 个答案:

答案 0 :(得分:0)

可以通过将to_char()'dy'格式化模式一起使用来解决问题,该模式将以小写字母返回一天的3个字符

您可以添加如下条件:

where 
case when to_char(current_timestamp,'dy')='mon' then
sp.create_timestamp between (current_date -3 ) AND (current_date - 2)
else
sp.create_timestamp between (current_date -1 ) AND (current_date)
end

编辑 根据@a_horse_with_no_name的建议的另一种方式

where 
case when extract(isodow from current_timestamp) = 1 then
sp.create_timestamp between (current_date -3 ) AND (current_date - 2)
else
sp.create_timestamp between (current_date -1 ) AND (current_date)
end

您可以根据需要添加更多条件,即星期六或星期日