oracle时区参考表,ORACLE 时区
商業和數據庫很多時候必須跨時區工作,從9i開始,oracle環境開始有了時區意識,通過指定數據庫的時區和使用TIMESTAMP WITH TIME ZONE和TIMESTAMP WITH LOCAL TIME ZONE數據類型來實現該功能。
TIMESTAMP WITH TIME ZONE不會存儲數據庫時區,但是有一個指示用來說明該時間所使用的時區。TIMESTAMP WITH LOCAL TIME ZONE會同時存儲數據庫時區,并且會根據查詢客戶端的時區進行相應的轉換。
數據庫時區可以在創建時在create database命令中設置,也可以使用alter database set TIME_ZONE=...來修改。如果沒有特別的指定,默認的,數據庫將遵從主機操作系統時區設置,或者取自環境變量ORA_STDZ。所有支持的時區記錄在V$TIMEZONE_NAMES動態性能表中。時區有三種表示方法,全名、縮寫和相對于標準時間(格林威治時間)的固定偏移,比如標準時間相應的三種表示方法分別為:Etc/Greenwich、GMT和+00:00。
Oracle 9i 開始多了 3 個關于時間的數據類型:TIMESTAMP [(precision)] TIMESTAMP [(precision)] WITH TIME ZONE TIMESTAMP [(precision)] WITH LOCAL TIME ZONE,其中 TIMESTAMP [(precision)] WITH TIME ZONE 保存了時區信息。
1. Oracle 的時區設置
Oracle 的時區可以分為兩種,一種是數據庫的時區,一種是 session 時區,也就是客戶端連接時的時區(經過實驗,連接以后再修改客戶端的時區,session 的時區不會更改)。
數據庫的時區在創建數據庫時可以通過在 create database 語句中加上 SET TIME_ZONE = ' { { + | - } hh : mi | time_zone_region } ' 來指定,如果,不指定,默認是按照數據庫所在的操作系統時區來設定的。創建之后,可以通過 alter database 來修改。其中 time_zone_region 參數可以通過查詢 V$TIMEZONE_NAMES 動態視圖來獲得所有支持的值。修改之后,需要重啟數據庫才能生效。經常有人會碰到無法修改的情況:
SQL> alter database set time_zone='+06:00';
alter database set time_zone='+06:00'
*
ERROR at line 1:
ORA-02231: missing or invalid option to ALTER DATABASE
TOM 對此問題有過解釋,TIME_ZONE 的設定主要是為了 WITH LOCAL TIME ZONE,當 session 的時區和數據庫的時區不同時,oracle 根據時區的差距轉換到數據庫的時間,再保存到數據庫的 WITH LOCAL TIME ZONE 類型中,他是不保存時區的,所以需要 TIME_ZONE 來進行各種時區之間時間的轉換(WITH TIME ZONE 類型保存了原始的時區,所以不需要 TIM
總結
以上是生活随笔為你收集整理的oracle时区参考表,ORACLE 时区的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机中字长名词解释,《计算机科学概论》
- 下一篇: oracle sql语句序列,Oracl