由於種種原因,在我們的系統中,賬套期間(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;
參考: