私はSOでいくつかの関連する質問を見ました(これともちろん、これのような)...本質的に、私が望むのは、日付をUTCとして保存し、アプリケーションユーザーに日付を表示したいタイムゾーンを選択させることです日時
フィールドは基礎となる JDBC ドライバーの影響を受けているように見えるので、これが UTC 日時を格納する方法として受け入れられるかどうか疑問に思います。
- MySQL とアプリケーション サーバー マシンの両方を UTC タイム ゾーンに設定します (分離する必要はありません)。
- MySQL と JVM の両方が、基礎となるシステム時刻設定を取得する必要があります (特に指示がない場合)。
DATETIME
MySQL 側でテーブル列を使用する- Hibernate側で対応するマッピングとして使用します
java.util.Date
(私java.sql.Timestamp
も使用できると思います) - 日時フィールドの解釈をアプリケーションに任せる - つまり、ユーザーに好みのタイムゾーンを選択させる
これでよろしいですか?
編集
明確にするために-ここでは、サーバー上で厳密に作成されたタイムスタンプを参照することを意味していました(egdate-time of record creation)。そのため、アプリケーション サーバーはDate
オブジェクトをインスタンス化します (new Date() はサーバー上の現在の日時に等しく、これは実際にはタイム ゾーンに依存しません)。
クライアントユーザーが検索/フィルタリングの目的で日付を指定したい場合、ここでクライアントローカル時間から UTC への変換が行われます。IMHO...