開始日が現在の日付より前 (<=) で、to_date が現在の日付より後 (>) の場合にメッセージを表示するクエリを実行しています。
to_date
がの場合、メソッドをNULL
使用して値を与えNVL
、チェック n を where 句にします。null でない場合 (つまり、ユーザーが値を提供した場合)、その値を使用して条件をチェックする必要がありますwhere句。
select a.id,
title,
body,
NVL(a.to_date, '9999-12-31 23:59:59') as todate,
cr_date
from a,
b
where a.cust_id = 20 and
a.body_id = b.body_id and
a.from_date <= current and
a.to_date > current
ただし、データベースに対してこのクエリを実行すると、ユーザーが to_date を入力したときの結果しか得られません。to_date が null で値が '9999-12-31 23:59:59' の場合、結果を取得しません。つまり、where 句の a.to_date > 現在の条件に失敗するため、これらのエントリは返されません。to_date が NULL の場合、値は '9999-12 ...' で正しく置換されますが、where 条件 '> current' は失敗します。
別のステートメントとしてではなく、クエリ内で置換を行いたいです。論理的にはうまくいくと思いますが、何らかの理由でどこかで間違っています。また、これがクエリの実行に影響するかどうかはわかりませんが、テーブルの作成時に to_date のデフォルト値が NULL に設定されます。
この問題について教えてください。ありがとう