あなたがTO_DATE
不足している:SQLパーサは、あなたがTO_DATE
機能を使用することを意図していることを見分けることができません
を、最終ラインがしようとしている前提としています。それはその例外を投げているのはなぜ
select *
from file_log f
where F.DCP_SRCE_FILENM_FK in ('ABC','DEF') and
F.TRANS_DT>=to_date('08/25/2017','mm/dd/yyyy') and
F.TRANS_DT<=TO_DATE('08/30/2017','mm/dd/yyyy') -- Missing on this line
をF.TRANS_DT
と1つ(ANY
)またはその両方(ALL
)の値を('08/30/2017','mm/dd/yyyy')
と比較すると、クエリの構文は次のようになります。
select *
from file_log f
where F.DCP_SRCE_FILENM_FK in ('ABC','DEF') and
F.TRANS_DT>=to_date('08/25/2017','mm/dd/yyyy') and
F.TRANS_DT<= ANY ('08/30/2017','mm/dd/yyyy')
構文的に有効なクエリです。しかし、F.TRANS_DT <= 'mm/dd/yyyy'
の比較を解析しようとすると、右側の文字列を暗黙的にORA-01858: a non-numeric character was found where a numeric was expected
で失敗する日付に変換しようとします。しかし、SQLパーサーは、クエリを有効にするために欠けているものを提案するために最善を尽くしました。
出典
2017-08-30 09:13:46
MT0
to_dateは、[ドキュメント]のとおり、日付リテラルを指定するための完全な方法です。(https://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements003.htm#SQLRF51062) 'DATEリテラルは、Oracle Databaseが文字列リテラルのかわりにTO_DATE式を受け入れる唯一のケースです。 – Boneist