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:
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 qui me donne: 26/05/2014 01:00:00 (en heure UTC)

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.

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;
Le résultat est:
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