關於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。
下面透過一個例子來說明時區的調整的影響。
1.建立相關的表:
SQL> create table times(date_std date, date_tz timestamp with time zone,
date_ltz timestamp with local time zone);
Table created.
2.確定系統當前的時區:
SQL> select property_value from database_properties where property_name='DBTIMEZONE';
PROPERTY_VALUE
00:00
3.修改當前連線的時區,並設定相關的時間戳格式:
SQL> alter session set time_zone='Asia/Chongqing';
Session altered.
SQL> alter session set nls_timestamp_tz_format='YYYY-MM-DD HH24:MI:SS TZD:TZR';
或者
SQL> alter session set nls_timestamp_tz_format='YYYY-MM-DD HH24:MI:SS TZH';
Session altered.
SQL> alter session set nls_timestamp_format='YYYY-MM-DD HH24:MI:SS';
Session altered.
SQL> alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS';
Session altered.
4.插入資料並顯示:
SQL> insert into times values('2004-10-26 15:00:00',
2004-10-26 15:00:00','2004-10-26 15:00:00');
1 row created.
SQL> commit;
Commit complete.
SQL> select * from times;
DATE_STD DATE_TZ DATE_LTZI
------------------- ---------------------------------------- ------------------------------
02004-10-26 15:00:00 2004-10-26 15:00:00 CST:ASIA/CHONGQING 2004-10-26 15:00:00
5.轉換當前連線的時區到資料庫時區:
SQL> alter session set time_zone=DBTIMEZONE;
Session altered.
SQL> select * from times;
DATE_STD DATE_TZ DATE_LTZ
------------------- ---------------------------------------- ------------------------------
2004-10-26 15:00:00 2004-10-26 15:00:00 +08 2004-10-26 07:00:00
可以看出,timestamp with local time zone型別的欄位DATE_LTZ已經根據時區的變換做出了相應的改變。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/101162/viewspace-1011678/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle關於時間/日期的操作Oracle
- 關於PHP 時區錯誤的問題PHP
- 2.5.10.2 關於資料庫時區檔案資料庫
- 關於 oracle 臨時表 ORA-14452Oracle
- Oracle修改時區Oracle
- 水煮oracle33---關於oracle中segment、schema和user區別Oracle
- 關於Oracle資料庫的時間查詢Oracle資料庫
- 關於學習ORACLE時linux環境搭建OracleLinux
- 關於 MySQL 時區設定的一個常用 sql 命令MySql
- 【Mysql】關於一個mysql的坑比時區問題MySql
- ORACLE中的時區Oracle
- 關於Oracle臨時表的使用的小經歷Oracle
- 關於 oracle NULLOracleNull
- 關於oracle with as用法Oracle
- 關於ORACLE AUTOTRACEOracle
- 關於提高Oracle資料庫效能的四個誤區Oracle資料庫
- 關於定時器定時器
- php 學習筆記之關於時區的那點事PHP筆記
- 關於oracle安裝時的root.sh指令碼解析Oracle指令碼
- Oracle資料庫時區Oracle資料庫
- oracle的時區問題Oracle
- 4.1 關於 Oracle RestartOracleREST
- [轉]關於oracle with as用法Oracle
- 關於oracle autonomous transactionOracle
- 關於oracle commitOracleMIT
- 關於informix和oracleORMOracle
- ORACLE 時間與時區(Time and Time Zone)Oracle
- 【mysql】關於連線mysql資料庫時出現的時區錯誤time zoneMySql資料庫
- oracle關於分割槽相關操作Oracle
- 坊間八卦 | 關於 Oracle 中國區裁員的是是非非Oracle
- 轉:Oracle的時區問題Oracle
- 時區以及時區對於Java時間類格式化的影響Java
- 不同於Oracle:SEQUENCE的區別Oracle
- 1 關於 Oracle Data GuardOracle
- 4.2.1 關於配置Oracle RestartOracleREST
- 關於oracle的Spool命令Oracle
- 關於oracle的upsertOracle
- 關於oracle審計功能Oracle