Convertir le Timestamp sans fuseau horaire à l'entier Postgres
J'ai hérité d'une base de données avec une bizarre schéma. Sans ennuyer les détails, j'ai une drôle de cas d'utilisation.
La table contient un champ completed_at qui est un timestamp sans fuseau horaire. Ce que j'essaie de faire est de trier les résultats par le timestamp où le timestamp > X
La bosse est X est un chiffre (ou nombre) de la valeur. D'essayer de convertir le timestamp int est en échec, ou même à la chaîne.
Si vous essayez simplement de completed_at > 0, vous obtenez
extract(epoch from timestamp_column)
?- Ne l'entier représenter "l'époque" du temps, ou est-il intégré timestamp comme
201501010800
(sens2015-01-01 08:00
)?
Vous devez vous connecter pour publier un commentaire.
La seule réponse que j'ai trouvé était dans ce message:
https://www.postgresql.org/message-id/3EE8B4ED.1060200%40pgsqldb.com
Fondamentalement, je pense, la réponse est:
select cast(extract(epoch from current_timestamp) as integer)
;J'ai eu un problème similaire: j'ai voulu extraire de l'année comme un Entier, donc, à l'aide de la ci-dessus, j'ai écrit
CAST(EXTRACT(YEAR FROM CURRENT_TIMESTAMP) AS INTEGER)
dans ma base de données PostgreSQL et a ensuite examiné la contrainte dans PGADMIN 4 et il est venu avec l'alternative suivante, que j'ai trouvé intéressant:date_part('year'::text, CURRENT_TIMESTAMP)::integer
Je voudrais utiliser le code suivant s'il est SQL. Il fonctionne pour moi. Changement de l'ASC aux DESC si c'est la mauvaise façon. Vous ne devriez pas avoir besoin de convertir quoi que ce soit.