IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

Conversion de date (fuseaux horaire)


Sujet :

SQL Oracle

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Conversion de date (fuseaux horaire)
    Bonjour ,

    Voici ma requete, elle fonctionne sauf que j'ai une heure de différence entre les heures réelles et celles obtenue (c'est un problème de fuseaux horaire) . Je sais qu'il faut que j'utilise la fonction " from_tz ( CAST ( utc_date AS TIMESTAMP), 'UTC') AT TIME ZONE 'Europe/Paris' " pour convertir la date , mais je ne vois pas comment l’insérer dans requête...

    Merci de votre aide !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    select 
    COALESCE(s3n.sb_name, ' ') as "Opération",
    MIN(case when c.char_name = 'DATE DEBUT' then TO_CHAR(tb.char_value, 'YYYY-MM-DD HH24:MI:SS') else NULL end) AS "Date début",
    MAX(case when c.char_name = 'DATE FIN' then TO_CHAR(tb.char_value, 'YYYY-MM-DD HH24:MI:SS') else NULL end) AS "Date fin",
    from subbatch_data d 
    join subbatches s on d.subbatch_id = s.subbatch_id 
    left outer join sb2_names s2n on s.sb2_inst_id = s2n.sb2_name_id 
    left outer join sb3_names s3n on s.sb3_inst_id = s3n.sb3_name_id
    left outer join sb4_names s4n on s.sb4_inst_id = s4n.sb4_name_id
    join time_batch_data tb on d.batch_id = tb.batch_id and d.subbatch_id = tb.subbatch_id
    join characteristics c on tb.char_id = c.char_id
    where d.batch_id = [f#Batch_ID]
    and sb_level =3
    group by sb_level, s2n.sb_name, s3n.sb_name, s4n.sb_name
    order by "Date début", sb_level

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    développeur Oracle
    Inscrit en
    Février 2014
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Roumanie

    Informations professionnelles :
    Activité : développeur Oracle
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2014
    Messages : 27
    Points : 26
    Points
    26
    Par défaut
    Le fonctionne FROM_TZ convertit une valeur TIMESTAMP (avec un paramètre TIME ZONE ) dans une valeur TIMESTAMP WITH TIME ZONE.


    Par exemple:


    Je suis à Londres, mon heure actuelle est GMT/UTC et date et l'heure sont 2014-03-19 11:00:00.


    Pour transformer ces date et l'heure dans les valeurs pour Europe/Paris j'utilise une requête comme ça


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SQL> SELECT FROM_TZ(CAST(TO_DATE('2014-03-19 11:00:00', 'YYYY-MM-DD HH24:MI:SS') AS TIMESTAMP), 'UTC') AT TIME ZONE  'Europe/Paris' FROM dual;
     
     
    FROM_TZ(CAST(TO_DATE('2014-03-1911:00:00','YYYY-MM-DDHH24:MI:SS')ASTIMESTAM     
    ---------------------------------------------------------------------------     
    19-MAR-14 12.00.00.000000 PM EUROPE/PARIS


    Donc, je considère que votre requête devient le suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    SELECT COALESCE(S3N.SB_NAME, ' ') AS "Opération",
    			 MIN(CASE
    						 WHEN C.CHAR_NAME = 'DATE DEBUT' THEN							
    							   SYS_EXTRACT_UTC(FROM_tz(CAST(TO_DATE(TB.CHAR_VALUE, 'YYYY-MM-DD HH24:MI:SS') AS TIMESTAMP), 'UTC') AT TIME ZONE 'Europe/Paris')
    						 ELSE
    							NULL
    					 END) AS "Date début",
    			 MAX(CASE
    						 WHEN C.CHAR_NAME = 'DATE FIN' THEN							
    							SYS_EXTRACT_UTC(FROM_tz(CAST(TO_DATE(TB.CHAR_VALUE, 'YYYY-MM-DD HH24:MI:SS') AS TIMESTAMP), 'UTC') AT TIME ZONE 'Europe/Paris')
    						 ELSE
    							NULL
    					 END) AS "Date fin",
    	FROM SUBBATCH_DATA D
    	JOIN SUBBATCHES S
    		ON D.SUBBATCH_ID = S.SUBBATCH_ID
    	LEFT OUTER JOIN SB2_NAMES S2N
    		ON S.SB2_INST_ID = S2N.SB2_NAME_ID
    	LEFT OUTER JOIN SB3_NAMES S3N
    		ON S.SB3_INST_ID = S3N.SB3_NAME_ID
    	LEFT OUTER JOIN SB4_NAMES S4N
    		ON S.SB4_INST_ID = S4N.SB4_NAME_ID
    	JOIN TIME_BATCH_DATA TB
    		ON D.BATCH_ID = TB.BATCH_ID
    	 AND D.SUBBATCH_ID = TB.SUBBATCH_ID
    	JOIN CHARACTERISTICS C
    		ON TB.CHAR_ID = C.CHAR_ID
     WHERE D.BATCH_ID = [ F#BATCH_ID ]
    	 AND SB_LEVEL = 3
     GROUP BY SB_LEVEL, S2N.SB_NAME, S3N.SB_NAME, S4N.SB_NAME
     ORDER BY "Date début", SB_LEVEL

Discussions similaires

  1. Parser une date suivi d'un fuseaux horaire (date+02:00) et conversion en Date.
    Par SpeedOverflow dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 30/06/2013, 13h37
  2. Réponses: 1
    Dernier message: 23/02/2009, 02h18
  3. Date et fuseaux horaires sous linux C++
    Par lsdfr dans le forum Linux
    Réponses: 7
    Dernier message: 16/07/2008, 18h26
  4. Conversion de date lors d'un import
    Par bilbon.S dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 26/03/2004, 14h33
  5. Conversion de date et division 64 bits
    Par dway dans le forum Assembleur
    Réponses: 38
    Dernier message: 27/01/2004, 10h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo