【发布时间】:2021-01-09 02:00:41
【问题描述】:
我是 SQL 新手,只是想知道如何在 PostgreSQL 中获取前一个工作日。我选择 (current_date - 1) 来获取昨天的日期,但我需要它来排除周末。例如,如果今天是星期一,那么我希望这个查询得到星期五的日期。
【问题讨论】:
标签: sql postgresql weekday
我是 SQL 新手,只是想知道如何在 PostgreSQL 中获取前一个工作日。我选择 (current_date - 1) 来获取昨天的日期,但我需要它来排除周末。例如,如果今天是星期一,那么我希望这个查询得到星期五的日期。
【问题讨论】:
标签: sql postgresql weekday
这不是花哨,但这是我用的:
select case extract('dow' from current_date)
when 0 then current_date - 2
when 1 then current_date - 3
else current_date - 1
end;
┌────────────┐
│ case │
├────────────┤
│ 2020-09-21 │
└────────────┘
(1 row)
【讨论】:
您可以在条件语句中使用带有日期缩写的TO_CHAR() 函数:
SELECT CASE WHEN TO_CHAR(current_date-1, 'dy') = 'sun' THEN
current_date-3
WHEN TO_CHAR(current_date-1, 'dy') = 'sat' THEN
current_date-2
ELSE
current_date-1
END
FROM tab
【讨论】: