Bagaimana cara mengubah waktu unix menjadi PostgreSQL 'Timstamp tanpa timezome?

17

Saya memiliki database PostgreSQL yang berjalan di server yang zona waktunya diatur ke Zona Waktu India (yaitu UTC +5: 30)

Saya memiliki beberapa data dalam tabel yang dibuat seperti ini:

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

Saya ingin menanyakan data dan mendapatkan nilai untuk waktu tertentu. Input saya akan menjadi Stempel Waktu Unix (yaitu Detik dari 1-Januari 1970)

Satu-satunya cara untuk mengubah waktu unix untuk Timestamp saya temukan adalah ini: select to_timestamp(TRUNC(CAST(1395036000 AS bigint))). Tapi ini membuat cap waktu dengan zona waktu. Data saya ada di timestamp without time zone, jadi saya tidak mendapatkan hasil apa pun.

Bagaimana cara mengubah waktu unix ke Timstamp PostgreSQL tanpa timezome?

Devdatta Tengshe
sumber

Jawaban:

36

Berikut adalah beberapa pendekatan:

Saya telah menyederhanakan kueri Anda, karena Anda seharusnya tidak memerlukan TRUNC(), atau CAST().

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

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

Untuk referensi, informasi lebih lanjut dapat ditemukan di tautan berikut:

AbuAbdoh
sumber
Cuplikan kedua juga berfungsi di RedShift.
Gianluca Casati