(nls_date_format
在其他设置中)源自nls_territory
. 因此,当您设置区域时,数据库也会将此区域的日期格式设置为默认值:
select value from nls_session_parameters
where parameter = 'NLS_DATE_FORMAT';
VALUE
--------------------------------------------------------------------------------
DD-MON-RR
ALTER SESSION SET NLS_TERRITORY = 'CIS';
select value from nls_session_parameters
where parameter = 'NLS_DATE_FORMAT';
VALUE
--------------------------------------------------------------------------------
DD.MM.RR
所以需要在地域之后设置日期格式:
ALTER SESSION SET NLS_TERRITORY = 'CIS';
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
ALTER SESSION SET NLS_DATE_LANGUAGE = 'RUSSIAN';
select value from nls_session_parameters
where parameter = 'NLS_DATE_FORMAT';
VALUE
--------------------------------------------------------------------------------
YYYY-MM-DD HH24:MI:SS
或者 - 更好的是 - 在转换中使用显式格式掩码:
ALTER SESSION SET NLS_TERRITORY = 'CIS';
select sysdate, to_char ( sysdate, 'YYYY-MM-DD HH24:MI:SS' ) from dual;
SYSDATE TO_CHAR(SYSDATE,'YY
-------- -------------------
07.02.20 2020-02-07 09:25:35