在資料庫裡查詢資料的時候,我們經常會遇到一些和日期時間格式的問題,比如顯示語言,顯示格式等。可能資料在資料庫裡面存放的格式是:yyyy-mm-dd hh24:mi:ss, 但我們查詢出來的卻是 22-1月-10, 第一反應可能是字符集出了問題。 其實還有乙個原因就是系統環境變數沒有設定,下面我們就來看下有關這個的配置問題。
1.
在session
中修改
1. 1
中英文的切換
sql> alter session set nls_date_language='simplified chinese';
會話已更改。
sql> select sysdate from dual;
sysdate
--------------
22-1月 -10
sql> alter session set nls_date_language='american';
會話已更改。
sql> select sysdate from dual;
sysdate
------------
22-jan-10
sql>
1.2
時間格式的切換
sql> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
會話已更改。
sql> select sysdate from dual;
sysdate
-------------------
2010-01-22 14:30:21
sql>
2.
在作業系統中設定相關環境變數
2.1 windows
平台c:> set nls_date_format=yyyy-mm-dd hh24:mi:ss
c:> set nls_date_language=american
c:>seet nls_date_language=simplified chinese;
注意:這裡yyyy-mm-dd hh24:mi:ss
不能加引號,但在
unix
系統中要加
sql> select sysdate from dual;
sysdate
-------------------
2010-01-22 14:33:21
這樣改了以後只對當前的控制台窗品有效,如果不想每次都設定,就修改系統
/使用者環境變數
,新增乙個變數,比如
nls_date_format
,值為yyyy-mm-dd hh24:mi:ss
。就可以了。
2.2 linux
平台$export nls_date_format=」yyyy-mm-dd hh24:mi:ss」
$export nls_date_language=」american」
$export nls_date_language=」simplified chinese」
注:在unix
系統中要加引號
export 只對當前session 有效,如果要長期儲存,就需要修改.bash_profile
引數,比如oracle使用者的,/home/oracle/.bash_profile, 在該檔案中加入相關引數以後就可以了。
nls_date_format=」yyyy-mm-dd hh24:mi:ss」;
export nls_date_format;
nls_date_language=」american」;
export nls_date_language;
nls_date_language=」simplified chinese」;
export nls_date_language;
補充:
修改時間日期的格式並不單是顯示上的問題,而是在內部儲存的值也會被覆蓋:
sql> select to_date(to_char(sysdate,'yyyy-mm-dd')) from dual;
select to_date(to_char(sysdate,'yyyy-mm-dd')) from dual
* error at line 1:
ora-01861: literal does not match format string
在沒有修改環境變數或session引數時,這個語句是無法執行的。修改後可以執行:
sql> select to_date(to_char(sysdate,'yyyy-mm-dd')) from dual;
to_date(to
----------
2010-1-22
注:
把引數nls_date_format
設定成yyyy-mm-dd
,查詢的過濾條件中
date
型別的字段就可以跟日期控制項生成的時間字串直接比較了,非常方便的,如果對查詢速度要求高,可以給日期型別的字段建立乙個基於函式的索引。
oracle時間格式
timestamp 格式時間 最常用方法 to timestamp 2013 06 04 12 22 10.1 yyyy mm dd hh24 mi ss.ff 時間加減 單位小於天用 numtodsinterval select sysdate,sysdate numtodsinterval 1,...
Oracle 時間戳timestamp格式掩碼相關
select to char systimestamp,hh24 mi ssxff9 from dual xff6 xff6 和 ff6 是相同的,即 x x 就是秒後小數點的掩碼 select to char systimestamp,hh24 mi ssxff6 from dual select...
Oracle中時間的格式
關於0racle中得時間格式 yyyy 用數字表達的四位數字年 2009 yyy 年份的最後三位 009 yy 年份的最後二位 09 y 年份的最後一位 9 rr 年份後兩位數字 會遇到千年蟲問題,考慮本世紀的因素 rr 年份後兩位數字 mon 三位字元的月份簡寫 aug mm 用數字表達二位月 0...