タイムゾーンを使用せずにUnix時間をPostgreSQLのティムスタンプに変換する方法は?


17

タイムゾーンがインドのタイムゾーン(UTC +5:30)に設定されているサーバーでPostgreSQLデータベースを実行しています

このように作成されたテーブルにいくつかのデータがあります:

CREATE TABLE "CLOUDDATA"
(
  "CD_Tm_Obs" timestamp without time zone,
  "CD_Avg_Cloud" double precision
)

データをクエリし、特定の時間の値を取得したい。入力はUnixタイムスタンプ(1970年1月1日からの秒数)になります

UNIXの時刻をタイムスタンプに変換する唯一の方法は、次のとおり select to_timestamp(TRUNC(CAST(1395036000 AS bigint)))です。しかし、これはタイムゾーンでタイムスタンプを作成します。データはにtimestamp without time zoneあるため、結果は得られません。

タイムゾーンなしでUnix時間をPostgreSQLのティムスタンプに変換する方法は?

回答:


36

以下にいくつかのアプローチを示します。

を必要とすべきではないので、クエリを単純化しましTRUNC()CAST()

SELECT to_timestamp(1395036000) AT TIME ZONE 'UTC';

SELECT timestamp '1970-01-01 00:00:00' + interval '1395036000 second';

参考のため、次のリンクで詳細を参照できます。


2番目のスニペットはRedShiftでも機能します。
ジャンルカカサティ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.