web-dev-qa-db-fra.com

"ERREUR: horodatage hors plage" convertissant l'Epoch stockée en bigint en horodatage

Je suis en train ERROR: timestamp out of range: "1.52701e+15" lors de la tentative de conversion d'une époque stockée sous forme de bigintamp en horodatage (la valeur est tirée d'une véritable table de base de données):

select to_timestamp(1527012834506374);
ERROR:  timestamp out of range: "1.52701e+15"

D'autres approches de conversion ne fonctionnent pas non plus:

select 1527012834506374::abstime::timestamp;
ERROR:  cannot cast type bigint to abstime

select 1527012834506374::integer::abstime::timestamp;
ERROR:  integer out of range

C'est une époque valide; https://www.epochconverter.com/ me dit que 1527012834506374 est équivalent au 2018-05-22 06: 13: 54.506 UTC

Comment puis-je faire la conversion en utilisant SQL dans Postgres?

4
Colin 't Hart

Lorsque je colle la valeur 1527012834506374 Dans https://www.epochconverter.com/ je vois l'avertissement:

En supposant que cet horodatage est en microsecondes (1/1 000 000 de seconde):

La to_timestamp() de Postgres suppose une époque avec des secondes, pas des microsecondes, vous devez donc utiliser:

select to_timestamp(1527012834506374 / 1000000.0)
6