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 03/04/2014 15:21:12

Xav1er
Membre

Fonctionnement des timestamp et fuseaus horaires

Bonjour,

J'ai du mal à comprendre le fonctionnement des timestamps.

Par exemple, comment faire pour savoir quelle heure il est à la Réunion quand il est 12h30 à Londres ?
Les requêtes que j'ai essayées ne donnent pas le bon résultat.

Sous Oracle, je pouvais faire :

select 
to_char (CAST(FROM_TZ(CAST(to_date ('20140102123000','YYYYMMDDHH24MISS') AS TIMESTAMP), 'Europe/London') 
AT TIME ZONE 'Indian/Reunion' AS DATE),'YYYYMMDD HH24MISS') from dual;

Qui donne bien 16h30 en hiver. Je ne parviens pas à faire l'équivalent en pgsql ...

Hors ligne

#2 03/04/2014 22:20:59

gleu
Administrateur

Re : Fonctionnement des timestamp et fuseaus horaires

Il faut configurer le paramètre timezone :

postgres=# set timezone to 'Indian/Reunion';
SET
postgres=# select '2014-04-01 12:30 Europe/London'::timestamptz;
      timestamptz       
------------------------
 2014-04-01 15:30:00+04
(1 row)

Guillaume.

Hors ligne

#3 04/04/2014 13:58:25

Xav1er
Membre

Re : Fonctionnement des timestamp et fuseaus horaires

Il n'y a pas moyen de faire tout dans la même requête ?
Je trouve ça très contraignant de changer ce paramètre par ce que c'est une requête qui est dans une boucle.

set timezone to 'xxxxx/xxxxx';
traitement
set timezone to 'Europe/Paris';

En plus, dans un select, je ne peux pas sélectionner des occurences qui ont une heure locale entre 12h et 14h, par exemple. J'ai un champ avec un timestamp without timezone, avec heure convertie à l'heure de Paris, et un champ avec le fuseau horaire d'origine.

Hors ligne

#4 04/04/2014 15:29:10

Xav1er
Membre

Re : Fonctionnement des timestamp et fuseaus horaires

Ca y est, j'ai trouvé ;-)

select '2014-04-01 12:30 Europe/London'::timestamptz at time zone 'Indian/Reunion';

Et je vais pouvoir remplacer les zones en dur par des données provenant de champs de mes tables smile

Hors ligne

#5 04/04/2014 16:24:37

Xav1er
Membre

Re : Fonctionnement des timestamp et fuseaus horaires

Il y a ça aussi que je trouve mieux :

select ('2014-04-01 12:30' at time zone 'Indian/Reunion') at time zone 'Europe/London';

Hors ligne

Pied de page des forums