【问题标题】:How can I get the previous weekday in PostgreSQL?如何在 PostgreSQL 中获取前一个工作日?
【发布时间】:2021-01-09 02:00:41
【问题描述】:

我是 SQL 新手,只是想知道如何在 PostgreSQL 中获取前一个工作日。我选择 (current_date - 1) 来获取昨天的日期,但我需要它来排除周末。例如,如果今天是星期一,那么我希望这个查询得到星期五的日期。

【问题讨论】:

    标签: sql postgresql weekday


    【解决方案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)
    
    

    【讨论】:

      【解决方案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
                
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-03-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-15
        • 2010-12-07
        • 2018-10-26
        • 2014-06-07
        相关资源
        最近更新 更多