Calculate closest working day in Postgres

后端 未结 4 1194
没有蜡笔的小新
没有蜡笔的小新 2021-01-05 13:24

I need to schedule some items in a postgres query based on a requested delivery date for an order. So for example, the order has a requested delivery on a Monday (20120319

4条回答
  •  感动是毒
    2021-01-05 14:05

    CREATE TABLE Holidays (Holiday, PrecedingBusinessDay) AS VALUES
      ('2012-12-25'::DATE, '2012-12-24'::DATE),
      ('2012-12-26'::DATE, '2012-12-24'::DATE);
    SELECT Day, COALESCE(PrecedingBusinessDay, PrecedingMondayToFriday)
    FROM
      (SELECT Day, Day - CASE DATE_PART('DOW', Day)
                             WHEN 0 THEN 2
                             WHEN 1 THEN 3
                             ELSE 1
                         END AS PrecedingMondayToFriday
       FROM TestDays) AS PrecedingMondaysToFridays
    LEFT JOIN Holidays ON PrecedingMondayToFriday = Holiday;
    

    You might want to rename some of the identifiers :-).

提交回复
热议问题