【发布时间】:2018-06-27 17:30:07
【问题描述】:
有没有办法找到上个月的最后一个工作日?我知道我可以使用SELECT (date_trunc('month', now())::date - 1) 获得上个月的最后一天,但我如何获得最后一个“工作日”?
【问题讨论】:
-
将本月的最后一天提供给副本中的查询:stackoverflow.com/questions/9743810/…
标签: sql postgresql date
有没有办法找到上个月的最后一个工作日?我知道我可以使用SELECT (date_trunc('month', now())::date - 1) 获得上个月的最后一天,但我如何获得最后一个“工作日”?
【问题讨论】:
标签: sql postgresql date
我相信这可以满足您的需求:
select (date_trunc('month', current_date) + interval '1 month' -
(case extract(dow from date_trunc('month', current_date) + interval '1 month')
when 0 then 2
when 1 then 3
else 1
end) * interval '1 day'
) as last_weekday_in_month
此类请求通常表明需要日历表。
【讨论】:
背负戈登的回答,我认为这就是你想要的:
SELECT (
date_trunc('month', current_date) - interval '1 day' -
(case extract(dow from date_trunc('month', current_date) - interval '1 day')
when 0 then 2
when 6 then 1
else 0
end) * interval '1 day'
)::date as last_weekday_in_last_month;
假设您的周末是 0(星期日)和 6(星期六)。它使用 OP 的原始逻辑查找上个月的最后一个日期,然后使用 Gordon 的 CASE 逻辑在最后一个日期为 0 或 6 时减去更多天数。
【讨论】: