今天協助排查異常數據,發現是以下相似代碼產生的:html
to_date(col_name,'yyyymmdd'),其中col_name是date類型。sql
這個代碼運行後,結果是:2018-11-16的date類型數據轉換後變成了2017-11-01。oracle
查閱官方文檔:函數
https://www.postgresql.org/docs/8.3/functions-formatting.htmlpost
to_date函數的參數爲字符串類型,因此上面的代碼是等價於下面的代碼:postgresql
select TO_DATE('2018-11-16' ,'YYYYMMDD')orm
執行後結果與預想的一致:轉換後爲2017-11-01。htm
將一樣的代碼轉換成oracle的語法:select TO_DATE('2018-11-16' ,'YYYYMMDD') from dual;blog
執行結果是:直接提示格式錯誤。文檔
緣由分析:從結果看,是to_date函數邏輯就是這樣子的,沒有完善的容錯或止錯處理,具體狀況須要查看源碼。
解決方法:對於類型轉換的函數,要查閱資料清楚函數的使用方法,正確的使用函數。