Vous n'êtes pas identifié(e).
Pages : 1
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
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
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
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
Hors ligne
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
Pages : 1