元の日時に関する情報を保持しながら、ユーザーが自分のローカル時間のデータを表示/クエリできるように、日時を保存する実用的な方法は何ですか。
基本的に、ユーザーは、さまざまなタイム ゾーンのシステムから収集されたデータを (自分の現地時間で) クエリできることを望んでいます。しかし、データが元のシステムでたとえば 18:00 に作成されたことを知りたい場合があります。世界のさまざまな地域のユーザーが同じイベントについてやり取りするときに役立ちます。
User1: What? We don't have any data for 20:00
User2: Dude, it says 20:00 right there on my screen.
User1: Wait, what timezone are you? What's the UTC-time?
User2: What is UTC? Is that something with computers?
User1: OMFG! *click*
データの保存方法についてアドバイスを求めています。
すべての日時を UTC で保存し、元のタイムゾーン名を含む列を追加して、 mysql CONVERT_TZ
、または Java で対応するものを使用できるようにすることを考えています。その後、アプリケーションはユーザーが入力した日付を UTC に変換し、データベースに簡単にクエリを実行できます。すべての日付は、アプリケーションでユーザーの現地時間に簡単に変換することもできます。元のタイムゾーン列を使用して、元の日時も表示できます。
ただし、これは、私が持っている日時ごとに、追加の列が必要であることを意味します...
start_time_utc datetime
start_time_tz varchar(64)
end_time_utc datetime
end_time_tz varchar(64)
私はここで正しい軌道に乗っていますか?
そのようなデータを扱ったことのある人は、自分の経験を共有してくれますか?
(MySQL 5.5 CE を使用します)
更新 1
データは、各エントリがローカル タイム ゾーンの日時を持つ xml ファイルで配信されます。したがって、挿入プロセスは 1 つだけで、1 つの場所で実行されます。
データベースに読み込まれると、さまざまなタイム ゾーンのユーザーに Web アプリケーションで表示されます。ユース ケースの大部分では、関心のあるデータは、ユーザーがデータを見ているのと同じタイム ゾーンから発生していました。より複雑なユース ケースの一部では、一連のイベントが相互に関連し、複数のタイム ゾーンにまたがっています。したがって、ユーザーは、考えられる原因/結果を相手の時間で調査するために、イベントについて話すことができることを望んでいます。UTC ではなく、独自の現地時間でもありません。