前提・実現したいこと
oracleのwhere句内のcase文について質問です。
SENDdatetimeというカラムの時間部分が0:00:00~05:59:59の場合は日付部分を-1した値で抽出し、6:00:00~23:59:59の場合は日付部分そのままの値で抽出したいです。
日付変更線が6時のシステムで、0:00:00~05:59:59は前日としたいのです。
「> '2020/07/31'」の不等号部分で以下のエラーメッセージが発生しました。
解決策をご教授ください。
発生している問題・エラーメッセージ
ORA-00905: キーワードがありません。
該当のソースコード
SELECT ID FROM TabelA WHERE ID = 0001 AND CASE WHEN TO_CHAR(SENDdatetime, 'HH24:MI:SS') <= '05:59:59' AND '00:00:00' <= TO_CHAR(SENDdatetime, 'HH24:MI:SS') THEN TO_CHAR(SENDdatetime, 'yyyy/mm/dd') - 1 >= '2020/07/31' WHEN TO_CHAR(SENDdatetime, 'HH24:MI:SS') <= '23:59:59' AND '06:00:00' <= TO_CHAR(J.MEASURE_SEND_DATE, 'HH24:MI:SS') THEN TO_CHAR(SENDdatetime, 'yyyy/mm/dd') >= '2020/07/31' END
試したこと
SQL文の中ではなくプログラム内(C#)で書けたらよかったのですが、様々な条件で難しいです。
回答2件
あなたの回答
tips
プレビュー