Bonjour,
J'ai un souci sur lequel je m'arrache les cheveux.
J'ai des colonnes qui contiennent des secondes représentant un timestamp unix. C'est à dire le nombre de secondes écouler depuis le 1/1/1970 00:00:00 UTC .
Pour moi récupérer la date UTC je fais donc:
ce qui me donne: 26/05/2014 01:00:00 (en heure UTC)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 select TO_TIMESTAMP_TZ( '01011970 UTC' , 'DDMMYYYY TZR' ) + NUMTODSINTERVAL( ( 1401058800 ), 'second' ) from dual;
Ce pendant quand j'essaye de formater la date, il me reconverti m'a date en UTC. Je m'explique Le timezone actuel est UTC+2 puisqu'on est en France à l'heure d'été. Et bien La BDD considère ma date UTC comme étant une date en UTC+2 et refait une conversion en UTC. En tous cas s'est mon impression.
Le résultat est:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 select to_char(TO_TIMESTAMP_TZ( '01011970 UTC' , 'DDMMYYYY TZR' ) + NUMTODSINTERVAL( ( 1401058800 ), 'second' ), 'DD/MM/YYYY hh24:mi:ss TZR') from dual;
25/05/2014 23:00:00 UTC
Comme je le vois il considère le Timestamp comme étant de l'UTC+2 et refais une conversion en UTC
Y a t il un moyen pour obtenir ma date formater en UTC c'est à dire 26/05/2014 01:00:00 UTC. Est ce que c'est moi qui fait une erreur.
J'ai aussi une autre condition, je ne connais pas le timezone de la/les BDD cibles qui sont potentiellement différents
Il s'agit d'oracle 11g
Merci d'avance
Partager