1

postgres データベースを .sql 形式でダウンロードしました。データベースのテンポラル列のタイプは、タイム ゾーン付きのタイムスタンプです。また、日付は以下の形式でデータベースに記載されています。

 1866-05-17 05:53:28+05:53:28
 1901-09-28 05:53:20+05:53:20
 1960-01-01 05:30:00+05:30
 1944-07-21 06:30:00+06:30

現在、「05:53:28+05:53:28」などの意味を解釈できません。つまり、これらの時間が表すタイム ゾーンです。また、タイムゾーンに関して混乱することなく、ユーザーが簡単にクエリを実行して生年月日を見つけることができるように、これらのタイムスタンプをどのように変換すればよいでしょうか。

4

2 に答える 2

4

PostgreSQL では、奇妙なタイム ゾーン オフセットについて心配する必要はありません。内部的には、timestamp with time zone(timestaptz略して) '1970-01-01' 以降の UTC タイム ゾーンの秒数のみが保存されます。

timestamp同じことがMySQL 5.0 以降にも当てはまります:
フィールド 'datetime' または 'timestamp' を使用する必要がありますか?

のみに関心がある場合は、列を からにdate変換することをお勧めします。Postgres では、 へのキャスト時にタイム ゾーンが適用されます。試す:timestamptzdatedatelocal

SELECT '2013-05-21 00:19:50+02'::timestamptz::date

奇妙なタイム ゾーン オフセットは、20 世紀初頭より前の「平均太陽時」のような歴史的に多様な制度によるものです。最近、同様の質問がありましたが、説明を添えて答えました:
PostgreSql: Getting strange-formated "timestamp with time zone"

Postgres のデータ型の詳細timestamptimestamptz:
Rails と PostgreSQL でタイムゾーンを完全に無視する

于 2013-05-20T22:27:03.180 に答える