select nvl(trunc(null),trunc(sysdate)) from dual;
上記のクエリを実行しているときに、次のエラーが発生します
ORA-00932: inconsistent datatypes: expected NUMBER got DATE
正常に動作する代わりに文字列または数値を取得したときのように見えますtrunc(sysdate)
。
ここから:
NVL の最初のパラメーターは、返される列の予期されるデータ型を決定します。trunc 関数は、パラメーターが NULL であるため、デフォルトで NUMBER に設定します。NVL の 2 番目のパラメーターは、日付であるため一致しないデータ型と一致する必要があります。
SQL> select nvl(trunc(sysdate), sysdate) as mydate from dual;
MYDATE
-------------------
26/05/2006 00:00:00
SQL> select nvl(trunc(null), sysdate) as mydate from dual;
select nvl(trunc(null), sysdate) as mydate from dual
*
ERROR at line 1:
ORA-00932: inconsistent datatypes: expected NUMBER got DATE
または、次のようにすることもできます。
SELECT NVL(TO_DATE(TRUNC(NULL)),SYSDATE) FROM dual;