你缺少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
爲什麼它是拋出該異常:
的SQL語法分析程序不能識別你打算使用TO_DATE
功能,並假設最後一行試圖將F.TRANS_DT
與一個(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數據庫接受TO_DATE表達式代替字符串文字的唯一情況.' – Boneist