Wie konvertiere ich eine Unix-Zeit ohne Zeitangabe in den PostgreSQL-Zeitstempel?

17

Ich habe eine PostgreSQL-Datenbank auf einem Server, dessen Zeitzone auf Indiens Zeitzone eingestellt ist (dh UTC +5: 30).

Ich habe einige Daten in einer Tabelle, die wie folgt erstellt wird:

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

Ich möchte die Daten abfragen und die Werte für eine bestimmte Zeit abrufen. Meine Eingabe wird ein Unix-Zeitstempel sein (dh Sekunden vom 1. Januar 1970)

Der einzige Weg , um die Unix - Zeit zeitzustempeln ich die Umwandlung hat festgestellt , ist dies: select to_timestamp(TRUNC(CAST(1395036000 AS bigint))). Dabei wird jedoch ein Zeitstempel mit der Zeitzone erstellt. Meine Daten sind in timestamp without time zone, daher erhalte ich keine Ergebnisse.

Wie konvertiere ich eine Unix-Zeit ohne Zeitangabe in PostgreSQLs Timstamp?

Devdatta Tengshe
quelle

Antworten:

36

Hier sind ein paar Ansätze:

Ich habe Ihre Anfrage vereinfacht, da Sie weder die TRUNC()noch die benötigen sollten CAST().

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

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

Weitere Informationen finden Sie unter den folgenden Links:

AbuAbdoh
quelle
Das zweite Snippet funktioniert auch mit RedShift.
Gianluca Casati