3
私は2つの列を持ちます.1つは "date"という名前で、もう1つは "time"という名前です。日付は日付データ型で、 "時刻"は文字データ型です。私は、これは正しいタイムスタンプを返しますが、「00」のタイムゾーンでタイムゾーンデータを格納するto_timestamp
新しい複合タイムスタンプ列を選択するためにSELECT
to_timestamp(concat_ws(' ',air_date,air_time),'yyyy-MM-dd HH24:MI:SS') as datetime
FROM table1
を次のクエリを使用しています。タイムゾーンが "EST5EDT"であることを明示的に伝えて、タイムゾーンの "+04"または "+05"のいずれかを取得します。私は、次のことを試してみましたが、私はそれに含まれるEST5EDTのタイムゾーン情報をタイムスタンプ列を選択するにはどうすればよい
SELECT
to_timestamp(concat_ws(' ',air_date,air_time,'EST5EDT'),'yyyy-MM-dd HH24:MI:SS TZ') as datetime
FROM table1
ERROR: "TZ"/"tz"/"OF" format patterns are not supported in to_date
SQL state: 0A000
エラーを受け取りましたか?
これはうまくいかないでしょう。私がそれをすると、入力されたdatetimeが "UTC"であると仮定し、それを "EST5EDT"に変換するとしたらどうなりますか?入力時間を "EST5EDT"として解釈し、後で変換するにはpostgresが必要です。 – syang
申し訳ありませんが、間違っていました。何らかの理由で 'to_timestamp'が'タイムゾーンなしのタイムスタンプ 'を返すと思います。しかし、あなたのフォーマットは[timstamp input](https://www.postgresql.org/docs/current/static/datatype-datetime.html#DATATYPE-DATETIME-INPUT)によってサポートされているので、 'concat_ws( ''、air_date、air_time、 'EST5EDT'):: timestamptz'。 – Abelisto
これによれば、少なくとも「postgres 9.5」では「タイムゾーン付きタイムスタンプ」を返します。https://www.postgresql.org/docs/9.5/static/functions-formatting.html –