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 :

Problème conversion chaine en date [11g]


Sujet :

SQL Oracle

  1. #1
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2013
    Messages
    933
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 933
    Points : 348
    Points
    348
    Par défaut Problème conversion chaine en date
    Bonjour,

    je suis sur une très grosse requête et je suis confronté à un souci, dans la sélection d'un champ, elle se présente de la manière suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    (
    select (t1.salr)
    from ccp_adh_periodes_n2 t1
    where t1.id = recap.idgdh
    and t1.per in ('2018M03')
     
    ) as "periode_2018M03",
    ..............
    .............
    from table2 recap
    .....
    .....
    ici c'est ok

    L'idée est que lorsque je vais faire tourner la requête automatiquement elle va reprendre les données sur l'année en cours et les 2 précédentes, du coup je me réfère à sysdate pour cela, en récupérant l'année, mais quand je fais mes tests ça ne marche pas , car je fais ceci :

    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 (t1.salr)
    from ccp_adh_periodes_n2 t1
    where t1.id = recap.idgdh
    and t1.per in concat(to_char(add_months(sysdate,0)-1, 'yyyy'),'M03') -- j'aimerais que la valeur qui est repris c'est 2018M03
     
    ) as "periode_2018M03",
     
    (
    select (t1.salr)
    from ccp_adh_periodes_n2 t1
    where t1.id = recap.idgdh
    and t1.per in concat(to_char(add_months(sysdate,0)-2, 'yyyy'),'M03') -- j'aimerais que la valeur qui est repris c'est 2017M03
     
    ) as "periode_2017M03",
    quand je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    concat(to_char(add_months(sysdate,-3), 'yyyy'),'M03')
    je veux reprendre les données sur l'année 2016 mais ça ne marche pas j'ai toujours les résultats sur l'année 2018,c'est à ce niveau qui doit y avoir un souci je crois quand je pense ne pas avoir l'année qui change, auriez vous une idée ?

    un grand merci à vous

  2. #2
    Membre chevronné
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Points : 1 878
    Points
    1 878
    Par défaut
    De quel format est la colonne "t1.per" ?

    Sinon la fonction add_months permet d'ajouter ou soustraire des mois et non des années donc si vous voulez obtenir l'année précédente, il faut faire -12
    Est-ce aussi une volonté d'avoir une requête par année et non une seule requête qui renvoi toutes les données de 2016 à 2018 ?

  3. #3
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2013
    Messages
    933
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 933
    Points : 348
    Points
    348
    Par défaut
    De quel format est la colonne "t1.per" ?
    c'est une chaine

    Est-ce aussi une volonté d'avoir une requête par année et non une seule requête qui renvoi toutes les données de 2016 à 2018 ?
    oui et une obligation pour le traitement qui va en découler.

    après quelques test, j'ai finalement trouvé , voici ce que j'ai fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    concat(to_char(sysdate, 'yyyy')-4 ,'M06')  ce qui me permet d'obtenir 2019M06
    et quand je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    concat(to_char(sysdate, 'yyyy')-4 ,'M06')-1 j'obtiens 2018M06 :)
    merci à toi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème conversion string en date - h2
    Par lequebecois79 dans le forum Autres SGBD
    Réponses: 0
    Dernier message: 16/03/2011, 12h38
  2. conversion chaine en date
    Par newcodeur dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/07/2008, 16h03
  3. conversion chaine en date
    Par hypothese dans le forum Requêtes
    Réponses: 2
    Dernier message: 05/07/2008, 01h13
  4. problème conversion chaine 10 char
    Par Hurin dans le forum C
    Réponses: 4
    Dernier message: 11/04/2008, 10h56
  5. Problème conversion chaine int
    Par Tyler Durden dans le forum Macro
    Réponses: 3
    Dernier message: 21/03/2008, 11h36

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