web-dev-qa-db-ja.com

UNIXタイムをタイムゾーンなしのPostgreSQLのタイムスタンプに変換する方法は?

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

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

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

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

UNIX時間を私が見つけたTimestampに変換する唯一の方法は、select to_timestamp(TRUNC(CAST(1395036000 AS bigint)))です。しかし、これはタイムゾーンでタイムスタンプを作成します。私のデータは_timestamp without time zone_にあるので、結果が得られません。

UNIXタイムをtimezomeなしでPostgreSQLのTimstampに変換する方法は?

17

ここにいくつかのアプローチがあります:

TRUNC()CAST()も必要ないので、クエリを簡略化しました。

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

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

参考までに、詳細については次のリンクを参照してください。

37
AbuAbdoh