更具体地说,
我有一个查询,该查询每天运行以进行报告。它使用昨天生成的数据,因此查询看起来像这样
where sp.create_timestamp between (current_date -1 ) AND (current_date)
但是,我想在星期一而不是星期日收集星期五的信息。有没有简单的方法可以忽略周末。
如果没有,我将不得不用Python写一些东西,我相信我可以在那做,但是我在SQL上找不到这样的功能
答案 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
您可以根据需要添加更多条件,即星期六或星期日