關於Oracle to_date函數的高級用法

因爲種種緣由,在咱們的系統中,帳套期間(PERIOD_NAME)因爲格式設置的緣由,數據庫層存儲的格式以下 Mar-19,而不是常規的2019-03。html

咱們沒法更改數據庫,涉及到的點太多。數據庫

可是期間數據存儲爲Mar-19是不方便的,好比期間大小就不能直接向2019-03這種格式同樣對比。oracle

因爲Oracle支持MON格式,因此嘗試使用spa

select TO_CHAR(to_DATE('Mar-19','MM-YY'),'YYYY-MM') FROM DUAL;   //ORA-01843: 無效的月份

,可是不幸的是報ORA-01843: 無效的月份,大部分解決方式都是經過更改NLS_LANGUAGE或者SESSION語言爲AMERICAN的方式來改變整個數據庫的環境參數,可行,可是不實用。code

其實不用,以下便可htm

select TO_CHAR(to_DATE('Mar-19','MM-YY','NLS_DATE_LANGUAGE = ''AMERICAN'''),'YYYY-MM') FROM DUAL;

 

參考:blog

to_date轉成字符串時ORA-01843 not a valid month 問題分析

Oracle Dates and Times 

相關文章
相關標籤/搜索