日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Oracle 时区(TimeZone )-- DST

發(fā)布時(shí)間:2023/12/9 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle 时区(TimeZone )-- DST 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Daylight Savings Time (DST)

指 定一個(gè)時(shí)區(qū)的時(shí)候,可以使用數(shù)字(-05:00),縮寫(EST)或者地區(qū)名稱(US/Eastern)。 在多數(shù)情況下,它們的效果是一樣的。但是在DST的處理過(guò) 程中,如果使用地區(qū)名稱來(lái)指定時(shí)區(qū),ORACLE會(huì)自動(dòng)進(jìn) 行DST的一些轉(zhuǎn)換。? 舉 例來(lái)說(shuō),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)來(lái)指定時(shí)區(qū),測(cè)試自動(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。 說(shuō)明這個(gè)運(yùn)算中沒(méi)有考慮DST的因素。

?

DST中 容易犯的錯(cuò)誤

  • 如果想把一個(gè)字符串轉(zhuǎn)換成 時(shí)間類型,就必須考慮“這是否是一個(gè)合法的時(shí)間?”,比如DST中 的2006-04-02 02:00 AM就是非法的時(shí)間
  • 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?

  • 在ORACLE Scheduler中,如果指定START_DATE的 時(shí)候沒(méi)有明確指定時(shí)區(qū),就會(huì)采用當(dāng)前session的時(shí) 區(qū)。這個(gè)情況下,很可能就使用了數(shù)字形式的時(shí)區(qū)。在DST的 時(shí)候,系統(tǒng)不能自動(dòng)進(jìn)行轉(zhuǎn)換,結(jié)果就差生了誤差。解決辦法是在指定START_DATE的時(shí)候明確的使用地區(qū)名稱來(lái)標(biāo)示時(shí)區(qū)
  • 轉(zhuǎn)載于:https://www.cnblogs.com/wait4friend/archive/2012/02/10/2345463.html

    總結(jié)

    以上是生活随笔為你收集整理的Oracle 时区(TimeZone )-- DST的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。