爲什麼我看到下面不同的日期格式:請參見SELECT語句和匿名塊的輸出的輸出問題與NLS_DATE_FORMAT
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';'? –