timestamp with time zone
を保存する場合 (timestamptz
)DBに保存するためにUTCに変換されます。取得されると、元のタイムゾーンではなく、クライアントの現在のタイムゾーンに変換されます。基本的には特定の時点です。
timestamp without time zone
もあります (timestamp
)。これは変換の対象ではありませんが、ではありません。 タイムスタンプを付けます。 timestamp
を保存する場合 クライアントのタイムゾーンをUTCに設定し、クライアントのタイムゾーンが「+08:00」のときに取得すると、同じ値が得られます。これは、生の時間値を保持するという点で、必要な半分です。
名前と動作はひどく紛らわしいですが、SQL標準によって設定されています。
特定のタイムゾーンで特定の時点を記録する場合は、タイムゾーンを個別に保存する必要があります。 INTERVAL
として保存することをお勧めします CHECK
を使用 colname BETWEEN INTERVAL '-12' HOUR + INTERVAL '1' SECOND AND INTERVAL '12' HOUR
に制限する制約 。その定義は-12:00を拒否し、+ 12:00を受け入れます。それが正しいかどうかは完全にはわかりませんので、確認してください。
timestamp
を保存することもできます そのタイムゾーンでの現地時間の(おそらく私がするだろう)、またはtimestamptz
を保存する イベントが発生したUTC時間と、それを現地時間に変換できるオフセット。
どちらもJDBCで正常に機能します。 JPAの場合、プロバイダーが間隔タイプをどの程度理解してマップするかによって異なります。理想的には、timestamp
を使用して、必要なカレンダーインスタンスを再構築する一時的に生成されたフィールドがエンティティに必要です。 およびinterval
データベースに保存されます。