私はタイム ゾーン ヨーロッパ/ベルリン (+02) にいます。Postgresql は UTC (+00) で実行されています。最新のローカルの真夜中の日付 (私のタイムゾーンでの当日の開始日) のタイムゾーンでタイムスタンプを取得する必要があります。
したがって、2013-03-03 14:00:00+02 がある場合、私の最終結果は次のようになります。
2013-03-03 22:00:00+00
2013-03-04 00:00:00+02 // the same
この日付を取得しようとしました
SELECT TIMESTAMP 'today' AT TIME ZONE 'Europe/Berlin'
残念ながら、これは 00:00 と 02:00 の間に間違った日付 (前日の真夜中) を生成します。これは、UTC 時刻が前日のままであり、今日は utc を使用して残りを計算しているように見えるためです。
ヨーロッパ/ベルリンに 2013-03-03 00:05 がある場合、これが返されます
2013-05-01 22:00:00+00
正しい日付が必要な場合は、使用する必要があります
SELECT date_trunc('day', now() AT TIME ZONE 'Europe/Berlin') AT TIME ZONE 'Europe/Berlin';
2013-05-02 22:00:00+00
これは正しいですが、かなり醜いです。
このコマンドのよりクリーンなバリアントはありますか?