MySQL&Javaでタイムゾーンを正しく扱う

| コメント(0) | トラックバック(0)

タイトル通り。

色々試行錯誤したけど、結論としては
更新系のクエリーの場合


  1. JavaでDateクラスのインスタンスに正しいタイムゾーンを設定

  2. それをStatement#setObjectでセットして普通に実行するだけ

基本的にデータベース内部ではエポックからのミリ秒とかで管理してるはず。

で、SELECTクエリーの場合、ResultSet#getDateとかgetTimestampで返ってくるオブジェクトはローカルのタイムゾーンになってるので、必要に応じて適切なタイムゾーンを設定する。

基本的な事として、Dateオブジェクトに違うタイムゾーンを設定しても、内部的な時間が変更になるわけではない、はず。東京の午後1時とシンガポールの正午は内部的には同じ時間。文字列として表示した時に13:00となるか12:00となるかの違い。

慣れてしまえば、それ程難しくはないと思うけど、結構面倒。

MySQLのタイムゾーンの扱いについてはこのページが詳しい(この文書の和訳)。

JDBCドライバのオプションでタイムゾーン関係のがいくつかあるけど、試してない(マニュアルページ)。

トラックバック(0)

トラックバックURL: http://www.kazu.tv/blog-mgr/mt-tb.cgi/683

コメントする

このブログの作者

名前:kazu
仕事:IT関係の何でも屋
メール:kazu 後幕 kazu どと tv
詳しくはこの辺

このブログ記事について

このページは、kazuが2008年7月 7日 19:38に書いたブログ記事です。

ひとつ前のブログ記事は「MySQLチューニング」です。

次のブログ記事は「WordPressでGoogleマップ」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ