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

タイムゾーンのあるPostgresqldate_truncは、ゾーンを1時間シフトします

    date_truncには2つのバリエーションがあると予想されます :timestamp用に1つ 1つはtimestamptz用です 、ドキュメント 言う:

    タイムスタンプとtimestamptzをよりよく理解したい場合は、最初にここでのすばらしい答え

    次に、date_truncについて 。私の実験とさまざまなSO回答の解釈によると(これ )、timestamptzを受信すると、すべてがdate_truncのように動作します。 最初にそれをタイムスタンプに変換します。この変換は、現地時間のタイムスタンプを返します。次に、切り捨てが実行されます。日付のみを保持し、時間/分/秒を削除します。

    この変換を回避するには(pozsに感謝)、date_truncにタイムスタンプ(timestamptzではなく)を指定します:

    date_trunc('day', TIMESTAMPTZ '2001-07-16 23:38:40Z' at time zone 'UTC')
    

    タイムゾーン「UTC」でのパーツat time zone 'UTC' 「このタイムスタンプをUTC時間のタイムスタンプに変換する」と表示されます(時間はこの変換の影響を受けません)。次に、date_truncは2001-07-16 00:00:00を返します。 。




    1. GeoDjangoとMySQL:ポイントをNULLにすることはできません。他にどのような空の値を使用する必要がありますか?

    2. オペランドには1列が含まれている必要があります

    3. SQLがベン図として結合する

    4. OracleSQLで単一の行をロックするにはどうすればよいですか。