Unix zamanını timgre olmadan PostgreSQL 'Timstamp'a nasıl dönüştürebilirim?


17

Ben saat dilimi Hindistan'ın Saat Dilimi (yani UTC + 5: 30) olarak ayarlanmış bir sunucuda çalışan bir PostgreSQL veritabanı var

Böyle oluşturulan bir tabloda bazı veriler var:

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

Verileri sorgulamak ve belirli bir süre için değerleri almak istiyorum. Girişim bir Unix Zaman Damgası olacak (örn. 1 Ocak 1970'ten Saniye)

Bulduk Damgası I unix zaman dönüştürme tek yolu şudur: select to_timestamp(TRUNC(CAST(1395036000 AS bigint))). Ancak bu, saat dilimi ile bir zaman damgası oluşturur. Verilerim var timestamp without time zone, bu yüzden sonuç alamıyorum.

Unix zamanını saat dilimi olmadan PostgreSQL'in Timstamp'ına nasıl dönüştürebilirim?

Yanıtlar:


37

İşte birkaç yaklaşım:

Eğer gerekmez gibi ben Sorgunuzla basitleştirdik TRUNC(), ne de CAST().

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

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

Referans olması için aşağıdaki bağlantılarda daha fazla bilgi bulunabilir:


İkinci pasaj RedShift üzerinde de çalışır.
Gianluca Casati
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.