【发布时间】:2017-02-22 06:48:25
【问题描述】:
为什么我在下面看到不同的日期格式:查看 select 语句的输出和匿名块的输出
13:46:23 13:46:23 SQL> conn prashant-mishra/ *****@*****
Connected to Oracle Database 12c Enterprise Edition Release 12.1.0.2.0
13:47:56 13:47:56 SQL> CREATE TABLE test AS SELECT SYSDATE as test_date
FROM dual;
Table created
13:48:15 13:48:15 SQL> SELECT test_date FROM test;
TEST_DATE
-----------
**10/13/2016**
13:50:17 13:50:17 SQL> BEGIN
2 FOR rec IN (SELECT test_date FROM test) LOOP
3 dbms_output.put_line(rec.test_date);
4 END LOOP;
5 END;
6 /
**13-OCT-16**
PL/SQL procedure successfully completed
其他有用的信息可能是:
13:50:20 13:50:20 SQL> SELECT value FROM v$nls_parameters
WHERE parameter ='NLS_DATE_FORMAT';
VALUE
----------------------------------------------------------------
DD-MON-RR
13:50:45 13:50:45 SQL> SELECT SYSDATE FROM dual;
SYSDATE
-----------
**10/13/2016**
【问题讨论】:
-
匿名块可能使用与 SQL*Plus 会话不同的 NLS 设置(dbms_output 调用中的隐式 TO_CHAR 转换)。请检查
nls_session_parameters和nls_database_parameters以了解可能解释您所看到行为的任何差异。 -
@MartinSchapendonk:我看不出有什么不同。 select * from NLS_DATABASE_PARAMETERS WHERE parameter ='NLS_DATE_FORMAT' ;--DD-MON-RR SELECT * FROM NLS_SESSION_PARAMETERS WHERE parameter ='NLS_DATE_FORMAT';--DD-MON-RR
-
当您使用
alter session set NLS_DATE_FORMAT = 'DD-MON-RR';显式更改会话之前 执行时,匿名块的输出是什么? -
哪个数据类型得到了
test_date列? -
@WernfriedDomscheit 它是 DATE 类型