工作中碰到用spool導出數據,其中有日期格式的字段,因為format了各列,就不想用to_char把日期再format了,而且用to_char的話還要把要所有的列都寫在select語句中。win下默認的格式為DD-MM-yy ,如下:
SQL>select sysdate from dual;
SYSDATE
----------
21-12月-04
數據庫中的日期字段中的格式為yyyy-mm-dd hh24miss,導出的數據中也要這樣的格式,設置nls_date_format就可以實現,如下:
1.用alter session來修改
SQL>alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
SQL> select sysdate from dual;
SYSDATE
-------------------
2004-12-21 14:44:24
2.在OS中設置nls_date_format
打開一個控制臺窗口
C:>SET NLS_DATE_FORMAT=YYYY-MM-DD HH24:MI:SS //注意:這里YYYY-MM-DD HH24:MI:SS不能加引號,但在unix系統中要加
SQL> select sysdate from dual;
SYSDATE
-------------------
2004-12-21 14:45:44
這樣改了以后只對當前的控制臺窗品有效,如果不想每次都設置,就修改系統/用戶環境變量,新增一個nls_date_format變量,值為YYYY-MM-DD HH24:MI:SS
打開一個控制臺窗口
SQL> select sysdate from dual;
SYSDATE
-------------------
2004-12-21 14:46:15
這樣在spool中直接select * from tabs就行了。