PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 07/04/2016 20:37:41

zeiklt
Membre

comparer epoch timestamp

Bonjour,
je ne connais pas le PSQL et je m'efforce de trouver une solution pour me faciliter la vie sur un autre logiciel qui récupère des informations au sein de l'une de ses tables.

Dans ma table PSQL se trouve une colonne "Date" qui contient le timestamp au format epoch (avec fuseaux horaire me semble t'il car 13 chiffres) et une autre colonne  "hexa" comprenant une suite de caractères en héxadécimal. Je cherche à sélectionner toutes les lignes dont la colonne "date" daterait de plus de 24 heures, et d'insérer la valeur "0" dans la colonne "hexa" pour les lignes correspondantes.

je suis donc parti sur une commande du type

UPDATE table
           SET hexa='0'
           WHERE ???

Et pour la condition après le where je cherche toujours... si une personne a une idée et pourrait m'aiguiller, je ne pourrais que lui en être reconnaissante.

Hors ligne

#2 07/04/2016 21:06:29

zeiklt
Membre

Re : comparer epoch timestamp

j'ai trouvé une commande du type "select to_timestamp(1455026833295);".
Elle affiche la date correcte si j'enlève les trois derniers chiffres, qui correspondent je suppose au fuseau horaire. Ca me donne envie de récupérer uniquement les 10 premiers caractères de la colonne "Date". J'ai bien trouvé une commande du type substring mais je ne vois pas comment l'insérer également. Me resterait encore à le comparer à la date J-1

Hors ligne

#3 07/04/2016 21:11:35

rjuju
Administrateur

Re : comparer epoch timestamp

Bonjour,

Voir la partie epoch dans la documentation : http://docs.postgresql.fr/9.4/functions-datetime.html

Pour vérifier le format du champ contenant un epoch :

SELECT timestamp with time zone 'epoch' + champ_epoch * interval '1 second';
SELECT timestamp with time zone 'epoch' + champ_epoch /1000 * interval '1 second';

Puis quelque chose comme

WHERE abs(extract('epoch' from now()) - champ_epoch) > 86400

(à vous de voir le format de votre champ)

Hors ligne

#4 07/04/2016 21:51:22

zeiklt
Membre

Re : comparer epoch timestamp

Un grand merci julien,

en suivant vos conseils la commande suivante a parfaitement fonctionné:

UPDATE DATE
SET HEXA='0'
WHERE abs(extract('epoch' from now()) - (date /1000 * interval '1 second'))) > 86400;

Zeiklt

Hors ligne

Pied de page des forums