如何在PostgreSQL中获取上一个工作日?

5

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

2个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
3

这不是很花哨,但这就是我使用的:

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)


2
您可以在条件语句内使用 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
          

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,