我是SQL的新手,想知道如何在PostgreSQL中获取前一个工作日。我已经使用select (current_date - 1)获取了昨天的日期,但我需要排除周末。例如,如果今天是星期一,则希望此查询可获取上周五的日期。
我是SQL的新手,想知道如何在PostgreSQL中获取前一个工作日。我已经使用select (current_date - 1)获取了昨天的日期,但我需要排除周末。例如,如果今天是星期一,则希望此查询可获取上周五的日期。
这不是很花哨,但这就是我使用的:
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