![]()
SQLクリニック(4) Page
3/3日付データ演算の達人技を伝授する 【第3話】
株式会社インサイトテクノロジー
山下正
2005/5/27
さて、タイムゾーンのイメージがつかめたところで、タイムゾーン情報を含むデータのエクスポート/インポートについて注意点を挙げておきます。特にタイムゾーンが違うデータベースサーバ間でデータをエクスポート/インポートする場合です。
結論をいうと、TIMESTAMP WITH (LOCAL) TIME ZONE型のデータについては問題なくインポートできます。TIMESTAMP型とDATE型のデータももちろん問題なくインポートできます……が、TIMESTAMP型とDATE型は、タイムゾーンをまったく意識しない状態でデータベースに格納されていますので、十分注意しないと、新しいタイムゾーンで旧データベースサーバの時刻を評価してしまうなど、整合性が取れなくなる可能性があります。
TIMESTAMP WITH TIME ZONE型はデータとしてタイムゾーンを保持していますので、タイムゾーンが異なるデータベースサーバにインポートしても、タイムゾーンを踏まえた評価が可能です。
複数の日時データ型が混在しているシステムでは、このあたりに十分注意して運用する必要があります。
さて、今回を含めて3回にわたり、日付とタイムゾーンの演算や操作の方法についてひととおり解説してきました。いかがだったでしょうか。新しいことを覚えなくても「SYSDATEと1/24方式でできるんだから別にいいじゃん」という方もいらっしゃることでしょう。しかし、可読性が上がることのメリットも大きいような気がしますし、何より期間データ型を使った演算はぜひ試していただきたいと思います。
タイムゾーンについては、いますぐ使う必要がないかもしれません。特に海外との連携がそもそもないようであればそれも当然です。ただ、新しいシステムが海外とのデータ連携の可能性がある場合は、あらかじめ対処できるようにしておかないとエクスポート/インポートに限らず、厄介なことになるかもしれません。
日本国内でシステムの開発をしていると、あまり気にしないことの1つに今回紹介したタイムゾーンがあります。そもそも、広大な国土を持つわけでもなく、一時期よく話題になったサマータイム制度も現時点では存在しないので、当然といえば当然です。
しかし本当に日本のタイムゾーンは1つなのでしょうか?
タイムゾーンには、UTCからのOFFSET時間を示す記述方法と、タイムゾーンの名称で表す方法があります。今回使用した名称としては、GMT(+00:00)、US/Arizona(-08:00)、Japan(+09:00)があります。実はこれらのタイムゾーンの中にも夏時間など複数の時刻を表すものがあり、タイムゾーン名を格納しているビューを検索してみると、1つのタイムゾーンでも複数行検索されてきます。
しかし、日本には現在のところ夏時間はありませんのでいわゆる「JST (Japan Standard Time:日本標準時)」 のみですが……と思ったら実は3レコード検索されてしまいました。つまり日本にも複数のタイムゾーンがあるということでしょうか?
SQL> SELECT * FROM v$timezone_names WHERE tzname = 'Japan'; |
| リスト6 日本には3つのタイムゾーンがある |
「LMT」は地方平均時といえばいいでしょうか。ちなみに、一般に日本のLMTは東京の時刻が使用されているようです。東京のLMTは、9時18分48秒。日本標準時は9時間ちょうどなので、東京の時刻は正確には18分48秒だけ日本標準時からずれていることになります。
JSTはいわずと知れた日本標準時です。これが一般的な日本の基準時刻といっても差し支えないでしょう。
さて、残るは「CJT」です。これは何でしょうか?
実は、日本にも複数のタイムゾーンが存在したことが過去にあるようです。それまでJSTとされていたタイムゾーンがこのときCJTとなりました。「Central Japan Time」の略称で、日本中央時間(もしくは中央日本時間)です。詳しくは述べませんが、このときCJTともう1つ存在したタイムゾーンは明治時代に南西諸島を中心として存在した時間帯で、西部標準時と呼ばれていたようです。こちらは「CST」(China Standard Time)に属していたようです。
![]() |
| 図5 日本にかつて存在した複数のタイムゾーン |
後に、この西部標準時(CST)のタイムゾーンは日本では採用されなくなり、また日本のタイムゾーンはCJTから単一のJSTに戻ります。
どうやら、これがv$timezone_namesで「Japan」が複数現れる理由のようです。また、このビューには現れませんが、過去には日本にも夏時間があったとか……。
あまりタイムゾーンを意識することがなかったかもしれませんが、少し注意を払うと、世界が意外に近くにあることをあらためて認識するよい機会になるのではないでしょうか。次回は、集計関数の便利な使い方について紹介します。(次回に続く)
| 筆者プロフィール |
| 株式会社インサイトテクノロジー Oracleに特化した製品開発、コンサルティングを手掛けるエンジニア集団。山下正は物腰の柔らかさで緊迫した状況を和やかにしつつも、鋭い視線で問題点を指摘するシステムコンサルタント。 |
| 3/3 |
| Index | |
| 連載 SQLクリニック(4) 日付データ演算の達人技を伝授する 【第3話】 |
|
| Page
1 ・データベースにおけるタイムゾーン |
|
| Page 2 ・タイムゾーンの確認 ・タイムゾーンの変更 |
|
| Page 3 ・タイムゾーンデータのエクスポート/インポート ・日本のタイムゾーン(LMT、JST、CJTの話) |
|
| SQLクリニック |
TechTargetジャパン
- IBMが歴史を変える!? 新カテゴリの製品を発表 (2012/5/25)
IBMは新たな製品カテゴリとなる「PureSystems」を発表。DB2 10とビッグデータの関係、PureSytemsの斬新さはどこかに迫ります - クラウド時代のデータ処理を支える分散KVSの可能性 (2012/5/23)
現在、高速データ処理の主流はインメモリ型データ処理だが、別の方法として分散KVSが注目を集めている。今回は分散KVSについて話を聞いた - 複数の表からデータを取り出して表示させる(2) (2012/4/23)
前回はSQLの基本的な結合構文について説明しました。今回は、より複雑な自己結合や外部結合について説明します - SQL Server、OOWにIQ、盛りだくさんの4月 (2012/4/20)
オラクルオープンワールドが3年ぶりに東京で開催されたほか、SQL Server 2012が提供開始されるなど、今月は話題が盛りだくさんです
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -

