サマータイムとOracleのTIMESTAMP WITH TIME ZONE型

イトウです。本日(3/8)からトロントはサマータイムになりました。
「3月なのにサマーなんてだいぶ気が早いな」と思っていたら、なんと今日の気温は10℃、明日は12℃と暖かい日が続いています。カナダに住む人たちの夏に対する強い思いが春の陽気を呼び寄せたのかも。日本でも以前に東京オリンピックでサマータイム導入の話がありちょっと話題になりましたが、実際にサマータイムのある地域に暮らしてみて気づいたこともあります。

そもそもサマータイムの方が長い

カナダでは3月の第2日曜日3:00にサマータイムが始まり、11月の第1日曜日2:00に終わります。約8か月、実に1年の2/3はサマータイムということになります。トロントのタイムゾーンは東部標準時(Eastern Standard Time, EST)と東部夏時間(Eastern Daylight Time, EDT)の2つですが、「標準」のほうが遥かに短いというのが不思議。

すべての地域でサマータイムを導入しているのではない

国土の広いカナダでは元々6つのタイムゾーンがあります。そして一部の州や地域ではサマータイムを導入していません。例えば、サスカチュワン州は州全体で中部標準時(CST)を通年採用していたり、オンタリオ州やケベック州では州内でサマータイムを導入していない地域がある等、対応に違いがあります。国内で複数の標準時と更にサマータイムが入り混じっている状況は、日本人からすると訳が分かりませんね。。バンクーバーのあるブリティッシュ・コロンビア州では1年中サマータイムのタイムゾーンとする法案が州議会に提出されたというニュースも見かけました。もう「サマータイム」って何だろう。

一般の人は夜が長くなる

サマータイムにより時計の針が1時間早まります。夏のトロントでは日没が夜の8〜9時頃になるので、仕事が終わってからも外でゆっくりと過ごすことができます。多くのレストランでパティオが開き、街中がとても賑やかに。寒く長い冬を過ごすカナダでは、みんな大好きサマータイム。

日本と仕事をしている人は辛い?

しかし、喜んでばかりいられない事情もあります。トロントはサマータイムになっても日本のタイムゾーンは変わりません。弊社の場合、24時間のシステム運用保守を日本と分割していますが、交代のタイミングは変わらない為、トロント側は業務開始と終了が1時間ずつ遅くなります。仕事の後に買い物や飲みに行きたいと思っても、標準時と比べて1時間短くなる逆転現象が生まれてしまうのです。また、日本とのWEB会議でも、日本時間で朝9時開始の場合、トロント側は夜7時開始だったのが夜8時開始になります。1日の終わりが遅くなるのは辛いなというのが個人的な感想です。ただ、仕事のない日は1日が長くて嬉しいのは皆と一緒。

ところでOracleではどうなの?

大分前置きが長くなりました。日本で仕事をしている時にはサマータイムを意識した運用を経験することはほとんどありませんでしたが、Oracle Databaseではタイムゾーンを意識した時刻を格納する為にTIMESTAMP WITH TIMEZONE型があり、指定のタイムゾーンでサマータイムかどうかを自動で判別して時間を返してくれます。ちょっと気になったので、どういう動きになるのか遊んでみました。

サマータイムへ切り替わる時刻を表示してみる

今回はOracle Live SQLを使って、ブラウザから19cのデータベースで動作を確認しました。手元に環境がなくてもSQLを実行できるので便利です。

TO_TIMESTAMP_TZファンクションを使うと、指定した文字列をTIMESTAMP WITH TIME ZONEデータ型の値に変換できるので、今日の標準時からサマータイムへの切替わりの例で確認してみます。TIMESTAMP WITH TIMEZONE型ではUTCに対するオフセットかタイムゾーンリージョンを示すTZR書式、TZD書式を指定することで、その地域に合わせた時刻を扱うことができます。ここでは標準時とサマータイムの違いが分かりやすいTZRとTZDを使ったタイムゾーンの指定をしています。

実際の時刻では2020年3月8日午前1:59の次は一気に3:00になります(2:00〜2:59が飛ばされる)。EST(東部標準時)とEDT(東部夏時間)のそれぞれで、1:00、2:00、3:00を表示させようとしてみたところ、存在しない時刻はエラーになり表示できませんでした(当たり前ですが)。1パターンだけエラー番号が異なるのが不思議ですね。

 

サマータイムを意識した計算を試してみる

次にサマータイムを意識した計算ができるのかを確認してみようと思います。3/8 0:00から1時間ずつ時刻を足していき、標準時からサマータイムに切替わるのかを試してみます。

1時間足した時はEST 1:00でしたが、2時間足したらEDT 3:00という結果になり、期待通りの動作になりました。

まとめ

TIMESTAMP WITH TIMEZONE型を使うことでOracleがサマータイムの切替えに対応できることが分かりました。日本でも海外とのシステム連携が必要な場合には利用しているケースもあると思います。一方で、テーブルのデータ型だけではない考慮も必要になります。例えば、SYSDATEのようにサーバ時刻を返す動作もある為、サーバ側でもサマータイム対応するのかどうか気になります。また、DATE型に比べてTIMESTAMP WITH TIMEZONE型のほうがバイト数が大きくなる(7バイト→13バイト)為、元あるシステムからデータ移行が必要な際にはテーブル設計等で注意が必要になりそうです。アプリケーションや他システムとの連携を考えると話は更に複雑になります。「本当に日本でサマータイム導入が見送られてよかった」というのが今回の結論です。

【参考】
SQL言語リファレンス
TO_TIMESTAMP_TZ
https://docs.oracle.com/cd/F19136_01/sqlrf/TO_TIMESTAMP_TZ.html#GUID-3999303B-89CA-4AA3-9817-458F36ADC9DC

Databaseグローバリゼーション・サポート・ガイド
4.2.1.3 TIMESTAMP WITH TIME ZONEデータ型
https://docs.oracle.com/cd/F19136_01/nlspg/datetime-data-types-and-time-zone-support.html#GUID-5BC5D2C1-6506-49BE-8177-F743A46FDC09
4.12 夏時間のサポート
https://docs.oracle.com/cd/F19136_01/nlspg/datetime-data-types-and-time-zone-support.html#GUID-E5171DEF-74D7-482A-B4E9-1EE3403E18BC

新メンバーのご紹介

皆さんこんにちは!

実は、2019年7月に CO-Sol Canada Inc. に初めての
現地採用の社員が入社しました!
日本での研修期間を経て、2020年1月から
カナダオフィスで勤務しています。

歓迎会にて!これからよろしくお願いします^^♪

今回は、そんな新入社員 GNさんと一問一答してみました!
あわせてコーソル新卒ブログもぜひご確認くださいね!

GNさん、自己紹介をお願いします!

日本生まれ日本育ちのベトナム人!
10年以上前にカナダに引っ越してきて
今はカナダ人として過ごしています。

Ryerson University(トロントにある州立大学)で
電気工学を勉強していました。

日本語、ベトナム語、英語の 3か国語を話せます。
好きなお菓子は海苔巻きせんべいです。

コーソルカナダを知ったきっかけは??

在カナダの日系人材紹介会社からコーソルカナダを紹介してもらい、
説明会に参加したのがきっかけです。

入社を決めた理由は??

資格支援制度が充実していることを知り、
また実際に多くの社員が各種資格を取得しているということを聞いて、
ここなら自分が成長できる環境だと思い、入社を決めました。

仕事での目標は??

まずは業務に慣れていくことを第一目標としています。

最終的にはコーソルカナダのビジネスを広げる手伝いができるくらい
成長したいと思っています。

入社後 6か月の間、研修のために日本に滞在していたGNさん。
なにか思い出はありますか??

研修の内容がとても充実していることに一番驚きました。
周りの社員の皆さんも親身に接してくれて
楽しく研修に臨むことができました。

また、休日には京都旅行へ行きました。
日本へ行く度に訪れるのですが、
いつも違う表情を見せてくれるので毎回楽しみにしています。
今回は綺麗な紅葉を見れました!

北野天満宮のもみじ苑を堪能するGNさん!

休日は何しているの??趣味は??

休日は主にポケモン GO やアクション系のゲームをしたり、
NBA のハイライト集を見たりして過ごしています。

トロントでは、ケンタロス、イルミーゼ、ソルロック、アグノム、
ピンク色のカラナクシ、青筋のバスラオ、クイタラン、
ヒヤップなど、地域限定で出現するポケモンをゲットしました!

ポケモンGO プレイヤーの方は、カナダにお越しの際には
ぜひゲットしてください!

NBA は、もちろんカナダ唯一のチーム Toronto Raptors を応援しています!
人種も国籍も関係なくカナダに住んでいる色んな人たちが
一体になって応援できるのが魅力だと思っています。

去年の夏に Celebration Square という広場で決勝戦を観戦したのですが、
熱度がすごかったです!

大勢の Raptors ファンと
野外観戦!

最後に!トロント周辺のおすすめスポットは??

僕はトロントから西に20分ほどのミシサガ地区に
住んでいるのですが、
オンタリオ州最大規模を誇る Square One Shopping Centre
一番のおすすめスポットです!

ショッピングモールだけではなく、
映画館、美術館、図書館等もあるので
ミシサガに行く機会があれば一度寄ってみてください!

現在は OJT で日々忙しくしているGNさん。
爽やかな笑顔と人柄の良さで、既にコーソルカナダになじんでいます!
近々ブログも更新してもらいますので、皆さんどうぞお楽しみに!

ちなみに、コーソル秋の BBQ イベントにも登場しております。
GNさんを探せ!してみてくださいね。(^^)

カナダの冬を味わいたい! in 2020

こんにちは!

皆さんいかがお過ごしでしょうか。
カナダは今年も寒いですが、最低気温が氷点下を
下回らない日もあり、体感だと去年の冬よりも寒さが
和らいでいる気がしています。

ただ、夏が恋しい。温暖な夏が来るのが待ち遠しい。。!

とはいえ、今年もただお家でごろごろだらだら
しているわけにもいきません。
そう!極寒カナダにはパウダースノーがあるのだから!

ウィンタースポーツといえばやはりスキー&スノーボード!
カナダの雪は北海道の雪と性質が似ているそうで、
水分が少なく粉のようにサラサラした
パウダースノーを楽しめます。

カナダ内では ウィスラーという
2010年バンクーバー冬季オリンピックの競技会場としても
使用されたスキー場が世界的に有名だそうです。

トロント周辺にも、数時間で行けるようなスキー場が
いくつか点在しています。

今回はオフィスからなんとバスで 5分の
Earl Bales Ski and Snowboard Centre スキー場へ
行ってきました。

広い公園内の一部としてスキー場があるのですが、
リフトやナイター用のライト等も完備されていて、
「ちょっくらひと滑り行こうぜ!」には
調度良さそうな雰囲気。

受付を済ませたら、ブーツ・板・ストックをレンタルして
準備は完了です。

サイズ確認のため、身長・体重・足のサイズを
測られました。。。体重は必要なのか?
Y さんは絶対に転ばないという
強い意志をもって
防水性のない私服で参戦です。

3人のうち 2人は10年ぶりのスキー。
恐る恐る滑り始め、、、あれ、なんか滑れるかも。
あ、なんか普通に滑れるんですけどー!ひゃっほー!
幼いころに習得したものは体が覚えているものですねー!
と思っているうちに丘陵は終わり。
リフトに乗ってまた頂上へ。

道は分かれていますが、斜面はこの一つだけです。
リフトに積もった雪で
お尻が濡れてしまった Yさん。
皆さんはスキーウェアを着用下さい。

「30秒滑って 2分リフトに乗る」をひたすら繰り返し、
気づいたら 計 4時間ほどゲレンデでスキーを楽しんでいました!
ご無沙汰スキーヤーの我々は大満足!!

久しぶりのスキー楽しい!

スキー・スノーボード教室も開講されているようで、
沢山のちびっこ達も楽しんでいました!

スキー・スノーボード教室は盛況のようでした。

今回行ったスキー場は 3月中旬まで楽しめるそうです。
トロント近郊にブルーマウンテンリゾートという
オンタリオ州で最大規模のスキー場があるので、
この冬にそちらへも行ってみたいと思います!

皆さんもウィンタースポーツを楽しんでくださいね!