¿Cómo convertir un tiempo de Unix a Timbremp de PostgreSQL sin timezome?


17

Tengo una base de datos PostgreSQL que se ejecuta en un servidor que tiene su zona horaria establecida en la zona horaria de la India (es decir, UTC +5: 30)

Tengo algunos datos en una tabla que se crea así:

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

Quiero consultar los datos y obtener los valores para un momento específico. Mi entrada será una marca de tiempo de Unix (es decir, segundos desde el 1 de enero de 1970)

La única manera de convertir el tiempo UNIX para Marca de tiempo que he encontrado es la siguiente: select to_timestamp(TRUNC(CAST(1395036000 AS bigint))). Pero esto crea una marca de tiempo con la zona horaria. Mis datos están dentro timestamp without time zone, así que no obtengo ningún resultado.

¿Cómo convertir un tiempo de Unix a Timstamp de PostgreSQL sin timezome?

Respuestas:


36

Aquí hay un par de enfoques:

He simplificado su consulta, ya que no debería necesitar TRUNC()ni el CAST().

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

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

Como referencia, se puede encontrar más información en los siguientes enlaces:


El segundo fragmento también funciona en RedShift.
Gianluca Casati
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.