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

#1 09/08/2019 09:03:24

oles67
Membre

Timestap without time zone

Bonjour,

j'ai une base (pg 9.6) alimentée par une application qui stock un champ date en Time without time zone.
Pour chaque requête, je dois systématiquement ajouter "+ interval '02:00:00'"

Je ne sais pas si c'est la bonne méthode et si c'est compatible changement d'horaire été/hiver parce que la base n'existe que depuis le mois de mai 2019.


Pour le moment, je suis en phase de prise en main et j'ai mis un peu le bazar partout.
Je compte de toute façon réinstaller pgsql avec paramètre par défaut et réinjecter les données depuis l'application.

Y-a-t-il une solution globale en se basant l'OS du client pour ne plus avoir à y penser à chaque requête ?

Merci de votre aide

Cordialement

show timezone : 
-------> Europe/Paris

SELECT current_setting('TIMEZONE');
-------> Europe/Paris

postgresql.conf : 
Timezone = 'GMT'
log_timezone = 'Europe/Brussels'

SELECT EXTRACT(TIMEZONE FROM now())/3600.0;
-------> 2

select now()::timestamptz;
select now()::time;
-------> me donne l'heure de ma montre

select now() at time zone 'gmt' at time zone 'Europe/Paris'
-------> me donne 2H de moins que sur ma montre.

Hors ligne

#2 09/08/2019 09:25:57

gleu
Administrateur

Re : Timestap without time zone

Si l'application stocke les données dans une colonne de type Time without timezone, vous perdez toute information de fuseau horaire. De ce fait, PostgreSQL ne fera aucun calcul de changement d'horaire été/hiver.


Guillaume.

Hors ligne

#3 09/08/2019 12:18:33

oles67
Membre

Re : Timestap without time zone

gleu a écrit :

Si l'application stocke les données dans une colonne de type Time without timezone, vous perdez toute information de fuseau horaire. De ce fait, PostgreSQL ne fera aucun calcul de changement d'horaire été/hiver.

Ok.
D'après vous, qu'elle est la meilleure solution pour que de manière implicite toutes les requêtes se fassent en without time.zone et retourne le résultat avec un interval +2h. Par exemple quelqu'un demande les valeurs de 00:00 à 24:00 et que ça lui retourne les valeurs de 00:00 à 24:00 et non pas de 22:00 à 22:00 ?
L'utilisateur final, n'a pas connaissance du without time zone et je peux pas intercepter ses requêtes.

Hors ligne

#4 09/08/2019 12:20:15

oles67
Membre

Re : Timestap without time zone

gleu a écrit :

Si l'application stocke les données dans une colonne de type Time without timezone, vous perdez toute information de fuseau horaire. De ce fait, PostgreSQL ne fera aucun calcul de changement d'horaire été/hiver.

Ok.
D'après vous, qu'elle est la meilleure solution pour que de manière implicite toutes les requêtes se fassent en without time.zone et retourne le résultat avec un interval +2h. Par exemple quelqu'un demande les valeurs de 00:00 à 24:00 et que ça lui retourne les valeurs de 00:00 à 24:00 et non pas de 22:00 à 22:00 ?
L'utilisateur final, n'a pas connaissance du without time zone et je peux pas intercepter ses requêtes.

Hors ligne

#5 09/08/2019 16:37:27

gleu
Administrateur

Re : Timestap without time zone

Ce n'est tout simplement pas possible. La colonne est déclarée sans fuseau horaire, donc toute configuration sur les fuseaux horaires ne la concernera pas.

Donc soit vous modifiez le type de la colonne pour que PG gère le fuseau horaire, soit vous modifiez les requêtes pour ajouter le "interval +2h". La première solution est de loin la plus intelligente.


Guillaume.

Hors ligne

#6 09/08/2019 20:00:03

oles67
Membre

Re : Timestap without time zone

gleu a écrit :

Ce n'est tout simplement pas possible. La colonne est déclarée sans fuseau horaire, donc toute configuration sur les fuseaux horaires ne la concernera pas.

Donc soit vous modifiez le type de la colonne pour que PG gère le fuseau horaire, soit vous modifiez les requêtes pour ajouter le "interval +2h". La première solution est de loin la plus intelligente.

Ce sera la 2e car la première n'est pas possible.
Merci.

Hors ligne

Pied de page des forums