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 10/02/2015 18:36:03

liofer
Membre

Problème Timestamp non en UTC ?

Bonjour,

Je souhaite créer une table 'Horodatage' contenant une colonne date et une colonne epoch correspondant au nombre de secondes depuis le début (je souhaite que epoch soit la clé primaire.
Avec un pas de temps de 1 minutes depuis 1970 à 2025.

du type

epoch; date
0;"1970-01-01 01:00:00"
60;"1970-01-01 01:01:00"
120;"1970-01-01 01:02:00"
180;"1970-01-01 01:03:00"
240;"1970-01-01 01:04:00"
300;"1970-01-01 01:05:00"

j'ai donc commencé avec une table date en timestamp withoutzone et effectuer ujn generate series pour ajouter une une minute depuis 1970 à 2025

Ensuite, j'ai crée ma table horodatage en faisant un create table qui rajoute un extract epoch etc... (j'ai pas réussi avec update)

Tout se passe pour le mieux sauf que au moment de déclarer comme clé primaire epoch, j'ai une erreur qui me fait constater que j'ai des doublons correspondant au changement d'heure.

Voilà j'ai fais le tour de la doc essayer plusieurs set time zone. Je tourne en rond.

Pouvez vous m'aider tout d'abord en m'indiquant si c'était la bonne manière ? et éventuellement la solution.

Merci Beaucoup

Hors ligne

#2 11/02/2015 10:25:35

ruizsebastien
Membre

Re : Problème Timestamp non en UTC ?

Bonjour,

Avez-vous essayé de mettre votre date dans un int (par exemple : 197001010100 en int au lieu du timestamp 1970-01-01 01:00:00).
Avec le generate series vous  incrémentez les minutes (donc le dernier chiffre du int).
Ensuite pour calculer l'écart avec epoch vous castez le int en timestamp.

J'espère que je suis assez clair...

Cordialement,

Dernière modification par ruizsebastien (11/02/2015 11:10:19)

Hors ligne

#3 11/02/2015 11:32:46

ruizsebastien
Membre

Re : Problème Timestamp non en UTC ?

Rebonjour,

En y réfléchissant c'est une très mauvaise idée que je vous ai donné ci-dessus...
Le mieux c'est de conserver votre timestamp et de choisir un fuseau horaire qui n'est pas sujet au changement d'heure été/hiver (par exemple GMT).
Configurable avec :
TimeZone dans postgresql.conf
ou SET TIME ZONE en SQL pour une session.

Pour choisir le fuseau horaire non soumis au changement d'heure : select * from pg_timezone_abbrevs where is_dst = false;

Cordialement,

Hors ligne

Pied de page des forums