Oracle 时区(TimeZone )-- DST
Daylight Savings Time (DST)
指 定一個(gè)時(shí)區(qū)的時(shí)候,可以使用數(shù)字(-05:00),縮寫(EST)或者地區(qū)名稱(US/Eastern)。 在多數(shù)情況下,它們的效果是一樣的。但是在DST的處理過 程中,如果使用地區(qū)名稱來指定時(shí)區(qū),ORACLE會(huì)自動(dòng)進(jìn) 行DST的一些轉(zhuǎn)換。? 舉 例來說,2006-04-02 2:00 AM是US/Eastern進(jìn) 行DST切換的時(shí)刻(http://www.timetemperature.com/tzus/daylight_saving_time.shtml)。在實(shí)行DST的時(shí)期,US/Eastern的 時(shí)區(qū)數(shù)字顯示為 -04:00,在非DST時(shí)期,數(shù)字顯示為 -05:00
?
下 面分別用地區(qū)名稱(US/Eastern)和數(shù)字(-05:00)來指定時(shí)區(qū),測試自動(dòng)DST轉(zhuǎn)換功能
?
select to_timestamp_tz('04/02/2006 01:00:00 US/Eastern',
?????????????????????? 'mm/dd/yyyy hh24:mi:ss tzr') +
?????? to_dsinterval('0 01:00:00')
? from dual;
TO_TIMESTAMP_TZ('04/02/200601:
-------------------------------------------------
2006/04/02 03:00:00.000000000 -04:00
?
select to_timestamp_tz('04/02/2006 01:00:00 EST',
?????????????????????? 'mm/dd/yyyy hh24:mi:ss tzr') +
?????? to_dsinterval('0 01:00:00')
? from dual;
TO_TIMESTAMP_TZ('04/02/200601:
-------------------------------------------------
2006/04/02 03:00:00.000000000 -04:00
使 用地區(qū)名稱(US/Eastern)或者縮寫(EST), 自動(dòng)進(jìn)行了DST轉(zhuǎn) 換。因?yàn)樵贒ST,2006-04-02 1:59 AM之后就是03:00 AM了,并且時(shí)區(qū)數(shù)字顯示為 -04:00。
?select to_timestamp_tz('04/02/2006 01:00:00 -05:00',
?????????????????????? 'mm/dd/yyyy hh24:mi:ss tzh:tzm') +
?????? to_dsinterval('0 01:00:00')
? from dual;
TO_TIMESTAMP_TZ('04/02/200601:
-------------------------------------------------
2006/04/02 02:00:00.000000000 -05:00
使 用數(shù)字(-05:00),不會(huì)進(jìn)行時(shí)區(qū)的轉(zhuǎn)換,仍然是 -05:00 ,并且是02:00 AM。 說明這個(gè)運(yùn)算中沒有考慮DST的因素。
?
DST中 容易犯的錯(cuò)誤
select to_timestamp_tz('04/02/2006 02:00:00 US/Eastern',
?????????????????????? 'mm/dd/yyyy hh24:mi:ss tzr')
? from dual
ORA-01878: specified field not found in datetime or interval?
轉(zhuǎn)載于:https://www.cnblogs.com/wait4friend/archive/2012/02/10/2345463.html
總結(jié)
以上是生活随笔為你收集整理的Oracle 时区(TimeZone )-- DST的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux db2 64位下载,DB2(
- 下一篇: 【BZOJ】1013 球形空间产生器