[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 メーリングリストの案内