LoginSignup
1
1

More than 5 years have passed since last update.

Oracle Databaseで東京の地方時を表示

Last updated at Posted at 2018-12-13

はじめに

「18分59秒をめぐって日本標準時の歴史をひもとくことに」を読みまして、Oracle Databaseで東京の地方時(LMT)が表示できるかどうかを試しました。ついでに日本の夏時間対応も試しています。

Oracle Databaseとタイムゾーン

Oracle Databaseは9i R1以降タイムゾーンのハンドリングが可能になっています。
利用可能なタイムゾーンはIANAのTime Zone Databaseを元にしており、ここに記載されているLMTにも対応しています。
ただし、Oracle Databaseが対応している時差の精度は分までです(マニュアルに明記されていない模様ですが、時差の時間部分、分部分を表す書式があるのに、秒部分を表す書式がない点からの推測となります)。東京の地方時はTime Zone Database上は+9:18:59ですが、+9:18がOracle Databaseとしての精度になります。

実際に試してみる

検証環境はOracle Database 12.1.0.2 Enterprise Edition(検証に関係ないけどExadata)です。
まず、今年の日付を表示させます。下記例のように、AT TIME ZONE句にてリージョン名もしくは時差の絶対値(+9:00など)を指定することで、指定したタイムゾーンに変換することが可能です。

SQL> select to_char(to_timestamp_tz('20180801 UTC', 'yyyymmdd tzr') at time zone 'Asia/Tokyo', 'yyyy/mm/dd hh24:mi:ss tzr tzd') from dual;

TO_CHAR(TO_TIMESTAMP_TZ('20180801UTC','YYYYMMDDTZR')ATTIMEZ
-----------------------------------------------------------
2018/08/01 09:00:00 Asia/Tokyo JST

UTC時間を日本時間に変換しました。9時間プラスされています。

では東京の地方時が採用されている期間となる、1887年8月1日だとどうなるかを試してみます。

SQL> select to_char(to_timestamp_tz('18870801 UTC', 'yyyymmdd tzr') at time zone 'Asia/Tokyo', 'yyyy/mm/dd hh24:mi:ss tzr tzd') from dual;

TO_CHAR(TO_TIMESTAMP_TZ('18870801UTC','YYYYMMDDTZR')ATTIMEZ
-----------------------------------------------------------
1887/08/01 09:18:00 Asia/Tokyo LMT

きちんと+9:18となっています。
JSTではなくLMTとなっていることも確認できます。

おまけ:日本の夏時間への対応

Wikipediaにあるように、過去日本でも夏時間が採用されていた時期があります。ここまでの説明で、これにも対応できることは想像がつくかと思いますが、実際に試してみます。

SQL> select to_char(to_timestamp_tz('19500801 UTC', 'yyyymmdd tzr') at time zone 'Asia/Tokyo', 'yyyy/mm/dd hh24:mi:ss tzr tzd') from dual;

TO_CHAR(TO_TIMESTAMP_TZ('19500801UTC','YYYYMMDDTZR')ATTIMEZ
-----------------------------------------------------------
1950/08/01 10:00:00 Asia/Tokyo JDT

夏時間の1時間が更に加算されていることが確認できます。
JSTではなくJDTとなっていることも確認できます。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1