sql >> データベース >  >> RDS >> PostgreSQL

Postgresはタイムゾーン変換でタイムスタンプを防止します

    提案された解決策は正しいです。より正確には、これはいくつかの正しい実装の1つです。次のいずれかが機能します:

    • UTCタイムスタンプを1つのフィールドに保存し、オフセットを別のフィールドに保存します。
    • ローカルタイムスタンプを保存する あるフィールドにオフセットを別のフィールドに保存します。
    • ローカルのdateを保存します 1つのフィールドに、time with time zoneを保存します 別の。 (ただし、time with time zone 一般的にはお勧めしません...)
    • UTCタイムスタンプを1つのフィールドに保存し、ローカルタイムスタンプを別のフィールドに保存します。

    はるかに簡単なのは、すでに提案した最初のものです。

    textにタイムスタンプを保存しないようにします フィールドは、あまり効率的に検索できない傾向があるためです。

    また、SQL Serverのバックグラウンドを使用している場合は、そのdatetimeoffsetを思い出すかもしれません。 タイプ。ローカルの日時とオフセットをフィールドに格納し、インデックス作成時に同等のUTCを使用します。 PostgresとMySQLのtimestamp with time zoneと考えるのが一般的です 同じ動作をしますが、そうではありません。彼らは単にセッションを使用します UTCとの間で変換するタイムゾーン。 SQL Serverには、セッションタイムゾーンの概念がないため、不一致があります。

    Postgresドキュメントのこの部分 を必ずお読みください。 。




    1. MySQLの1つを除くすべての列を選択しますか?

    2. 代理キーで逆インデックスを使用することをお勧めしますか? (Oracle)

    3. 文字列の前後のワイルドカード-MySql、PSQL

    4. 複数行の最大値に基づいて単一行を選択する方法