J'ai une base de données PostgreSQL exécutée sur un serveur dont le fuseau horaire est défini sur le fuseau horaire de l'Inde (c'est-à-dire UTC +5: 30)
J'ai quelques données dans un tableau qui est créé comme ceci:
CREATE TABLE "CLOUDDATA"
(
"CD_Tm_Obs" timestamp without time zone,
"CD_Avg_Cloud" double precision
)
Je souhaite interroger les données et obtenir les valeurs pour une heure spécifique. Mon entrée sera un horodatage Unix (c'est-à-dire secondes du 1er janvier 1970)
La seule façon de convertir l'heure Unix en horodatage que j'ai trouvée est la suivante: select to_timestamp(TRUNC(CAST(1395036000 AS bigint)))
. Mais cela crée un horodatage avec un fuseau horaire. Mes données sont dans timestamp without time zone
, Donc je n'obtiens aucun résultat.
Comment convertir un temps Unix en Timstamp de PostgreSQL sans timezome?
Voici quelques approches:
J'ai simplifié votre requête, car vous ne devriez pas avoir besoin de la TRUNC()
, ni de la CAST()
.
SELECT to_timestamp(1395036000) AT TIME ZONE 'UTC';
SELECT timestamp '1970-01-01 00:00:00' + interval '1395036000 second';
Pour référence, plus d'informations peuvent être trouvées sur les liens suivants: