• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:数日経過した後にNULLに変換する処理は???)

SQLで数日経過したデータをNULLに変換する処理とは?

このQ&Aのポイント
  • SQLでテーブルのある項目に入っている日付がSYSDATEから数日経過した場合、NULLに変換する処理をしたいです。具体的には、SYSDATEから7日以上経過したデータをNULLにしたいと考えています。また、処理の中で土曜日と日曜日を考慮する必要もあります。
  • このような処理は単純なSQL文だけでは実現できません。土曜日だった場合には9日経過するまでデータをNULLにせず、日曜日だった場合には8日経過するまでデータをNULLにしないような処理を追加する必要があります。
  • また、企業の休み(お盆、正月、祝日など)を考慮する場合には、休みのデータを持ったテーブルを作成する方が効率的です。ただし、SQL単文でも休みを考慮することは可能ですが、処理が煩雑になる可能性があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.2

UPDATE テーブル SET 日付 = NULL WHERE 日付 = TRUNC(SYSDATE) - CASE TO_C HAR(日付, 'DAY') WHEN '土曜日' THEN 9 WHEN '日曜日' THEN 8 ELSE 7 END かな? > あと余談ですが・・・例えば企業の休み > (お盆、正月、もしくは祝日など)を考慮 > したい場合、休みのデータを持ったテー > ブルを作るほうが無難ですか?それと > もSQL単文でも可能でしょうか?(長い > 文かつ効率が悪くても・・・) 普通は全日を持ったカレンダーマスタを持つかな。

mr-r00
質問者

お礼

ありがとうございました。 大変参考になる意見ありがとうございました。

その他の回答 (1)

  • yorozu_ya
  • ベストアンサー率54% (76/140)
回答No.1

>あと余談ですが・・・例えば企業の休み(お盆、正月、もしくは祝日など)を考慮したい場合、 >休みのデータを持ったテーブルを作るほうが無難ですか? 休みではなく、営業日のデータを持つのが正解です。 対象日と今日の間のレコード数を数えるのならSQL一発でできますよ。

mr-r00
質問者

お礼

ありがとうございました。

関連するQ&A