oracle关于时区,关于oracle时区
關(guān)于oracle時區(qū)[@more@]
商業(yè)和數(shù)據(jù)庫很多時候必須跨時區(qū)工作,從9i開始,oracle環(huán)境開始有了時區(qū)意識,通過指定數(shù)據(jù)庫的時區(qū)和使用TIMESTAMP WITH TIME ZONE和TIMESTAMP WITH LOCAL TIME ZONE數(shù)據(jù)類型來實現(xiàn)該功能。
TIMESTAMP WITH TIME ZONE不會存儲數(shù)據(jù)庫時區(qū),但是有一個指示用來說明該時間所使用的時區(qū)。TIMESTAMP WITH LOCAL TIME ZONE會同時存儲數(shù)據(jù)庫時區(qū),并且會根據(jù)查詢客戶端的時區(qū)進行相應(yīng)的轉(zhuǎn)換。
數(shù)據(jù)庫時區(qū)可以在創(chuàng)建時在create database命令中設(shè)置,也可以使用alter database set TIME_ZONE=...來修改。如果沒有特別的指定,默認的,數(shù)據(jù)庫將遵從主機操作系統(tǒng)時區(qū)設(shè)置,或者取自環(huán)境變量ORA_STDZ。所有支持的時區(qū)記錄在V$TIMEZONE_NAMES動態(tài)性能表中。時區(qū)有三種表示方法,全名、縮寫和相對于標準時間(格林威治時間)的固定偏移,比如標準時間相應(yīng)的三種表示方法分別為:Etc/Greenwich、GMT和+00:00。
下面通過一個例子來說明時區(qū)的調(diào)整的影響。
1.建立相關(guān)的表:
SQL> create table times(date_std date, date_tz timestamp with time zone,
date_ltz timestamp with local time zone);
Table created.
2.確定系統(tǒng)當前的時區(qū):
SQL> select property_value from database_properties where property_name='DBTIMEZONE';
PROPERTY_VALUE
00:00
3.修改當前連接的時區(qū),并設(shè)置相關(guān)的時間戳格式:
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.插入數(shù)據(jù)并顯示:
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.轉(zhuǎn)換當前連接的時區(qū)到數(shù)據(jù)庫時區(qū):
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已經(jīng)根據(jù)時區(qū)的變換做出了相應(yīng)的改變。
總結(jié)
以上是生活随笔為你收集整理的oracle关于时区,关于oracle时区的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java面试加分_不只是给面试加分 --
- 下一篇: fastapi 传输文件存文件_揭秘|国