關於Oracle to_date函數的高級用法


由於種種原因,在我們的系統中,賬套期間(PERIOD_NAME)由於格式設置的原因,數據庫層存儲的格式如下 Mar-19,而不是常規的2019-03。

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

但是期間數據存儲為Mar-19是不方便的,比如期間大小就不能直接向2019-03這種格式一樣對比。

由於Oracle支持MON格式,所以嘗試使用

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

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

其實不用,如下即可

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

 

參考:

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

Oracle Dates and Times 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM