[pgsql-jp: 41854] Re: 連休の場合の翌営業日判定

各務 kagami-h @ outward.jp
2015年 12月 29日 (火) 02:33:42 JST


味噌さん。
各務と申します。

どこかのサイトで同じ質問を見かけたような気がしますが……。

ざっくりとですが、引落日基準日を含め未来に2週間位ほどカレンダーを見て、
平日の最小の日付をとるのかなぁと思いました。

SELECT 
target_date -- これ
FROM (
  SELECT target_date::date 
  , CASE WHEN EXTRACT(DOW FROM target_date) IN (0,6) THEN TRUE ELSE FALSE END AS flg_1 -- 土日か
  , CASE WHEN (SELECT holiday FROM t_holiday WHERE t_holiday.holiday = gen_ser.target_date) IS NULL THEN FALSE ELSE TRUE END AS flg_2 -- 休日か
  FROM generate_series ('2015-05-02', ('2015-05-02'::date + interval '14 day'), interval '1 day') AS gen_ser(target_date) -- 引落日基準日から2週間分を見る
) AS v1
WHERE (flg_1 OR flg_2) = FALSE -- 平日限定
ORDER BY target_date LIMIT 1 -- 最小
;

データーベース側でやる処理かはともかく、SQL で書くとこんな感じかな?
Postgres とも generate_series 以外はほぼ関係ないですが、よければ参考まで。

----
各務


pgsql-jp メーリングリストの案内