同じSQLでも環境によって上記エラーとなる場合がある
下記のSQLはどの環境でも上記エラーとなる例、年月日時分秒まである日付を年月日でTO_DATEすると発生
select to_date(‘2015/01/01 10:00:00′,’YYYY/MM/DD’) from dual;
同様のことが環境とSQLにより発生する
①環境変数が年月日
NLS_DATE_FORMAT=YYYY-MM-DD
select * from v$nls_parameters where parameter = ‘NLS_DATE_FORMAT’;
日付の確認
select to_char(sysdate) from dual;
2018-07-03
問題なし
SELECT TO_CHAR(SYSDATE, ‘MM/DD’) AS CALENDAR FROM DUAL
問題なし
SELECT TO_CHAR(TO_DATE(SYSDATE, ‘yyyy-mm-dd hh24:mi:ss’), ‘MM/DD’) AS CALENDAR FROM DUAL
②環境変数が年月日時分秒
ALTER SESSION SET NLS_DATE_FORMAT=’yyyy-mm-dd hh24:mi:ss’;
NLS_DATE_FORMAT=yyyy-mm-dd hh24:mi:ss
日付の確認
select to_char(sysdate) from dual;
2018-07-03 17:17:08
問題なし
SELECT TO_CHAR(SYSDATE, ‘MM/DD’) AS CALENDAR FROM DUAL
問題なし
SELECT TO_CHAR(TO_DATE(SYSDATE, ‘yyyy-mm-dd hh24:mi:ss’), ‘MM/DD’) AS CALENDAR FROM DUAL
エラー発生
SELECT TO_CHAR(TO_DATE(SYSDATE, ‘yyyy-mm-dd’), ‘MM/DD’) AS CALENDAR FROM DUAL