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

Oracle Discussion :

Probleme de date avec changement d'année


Sujet :

Oracle

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 11
    Points : 5
    Points
    5
    Par défaut Probleme de date avec changement d'année
    Salut,

    Voilà je fais un stage où je dois faire des statistique sous excel avec des données provenant d'une base oracle.

    Je dois créer par exemple un tableau pour l'année en cours ( 2004 pour encore 1mois ) regroupant mois par mois divers evenements, calcule de % etc.... Ca c'est facile a mettre en place.,puis faire different graphique a partir de ce tableau

    Mon problème est le suivant :

    Debut janvier 2005, les personnes qui vont utiliser mon tableau vont se servir des graphiques pour faire une presentation, or comme mes requete prennent en compte 'l'année en cours ' et non l'année 2004, le 01-01-2005, mon tableau va etre en quelque sorte re-initialisé et donc quasi vierge..De ce faite mon graphique ne sera plus valable.

    Ma requete generique est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select count(*)
    from table1
    where to_char(dtobs,'MM')='11'
    and to_char(dtobs,'YYYY')='to_char(sysdate,'YYYY')
    and type='xxx'
    Donc comment faire pour garder, au moins 15j durant janvier 2005 , mon tableau de l'année 2004 ? Sachant que mon tableau doit se mettre a jour automatiquement pour l'année en cours, donc impossible de mettre ==> to_char(dtobs,'YYYY')='2004'

    J'espere avoir été assez clair et merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    et pourquoi pas un truc du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    AND to_char(dtobs,'YYYY')=(
                       CASE 
                        WHEN to_char(sysdate,'MM')='01' 
                         THEN to_char(ADD_MONTHS(sysdate,-12),'YYYY')  
                          ELSE to_char(sysdate,'YYYY') 
                          END)

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Cool ca me fait deja une bonne idée merci

    Par contre cela veux dire que chaque janvier il prendra en compte l'année precendante, et le mois de janvier sera mis a jour en fevrier , enfin si je me trompe pas.

  4. #4
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    bah a priori oui... mais tu peux peut-être changer ta requête pour afficher une année glissante au lieu d'une année calendaire

  5. #5
    Futur Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Ben mon tableau doit etre presente comme ca :


    Année en cours

    Evenement || jan || fev || mars || avr || etc .......
    evt 1
    evt 2
    evt 3



    Donc chaque mois il y a un calcule sur tel ou tel evenements. et chaque mois ils ont besoin de graphique.
    Enfin ils font les presentation graphique en debut de chaque mois pour le mois précedent, donc le décallage uniquement en janvier ne doit pas trop poser de probleme.

  6. #6
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    ha oui d'accord

  7. #7
    Futur Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Ma fois je vais voir si ca les dérange pas de procèder ainsi, logiquement ca devrait etre bon Je te remerci de ton aide

    Ah pendant que je suis là , j'ai un autre problème du meme genre.
    Je dois faire chaque mois un autre tableau concernant le mois precedant, et je sèche aussi pour le problème au passage de 2005, car là il y a le mois a décaller. J'ai essayer en regardant celui que tu avais fait plut haut, mais je melange un peu ( je maudits les dates )

    J'ai fais :
    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
     
    and to_char(t.dtobs,'MM')=(
    CASE
        when to_char(sysdate,'MM')='01'
        then '12'
        else to_char(sysdate,'MM')
    END)
     
    and to_char(t.dtobs,'YYYY')=(
     
    CASE
        when to_char(sysdate,'MM')='01'
        then to_char(add_months(sysdate,-12),'YYYY')
        else to_char(sysdate,'YYYY')
    END)
    Mais là il me décalle pas le mois si on est pas en janvier

  8. #8
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    c'est simplement parce que toi tu raisonnes avec les numéros de mois et d'année au lieu de faire tes tests avec des dates. Utilises TO_CHAR(ADD_MONTHS(sysdate,-1),'MM') pour avoir le mois précédent au lieu de TO_CHAR(sysdate,'MM')-1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    and to_char(t.dtobs,'MM/YYYY')=
      TO_CHAR(ADD_MONTHS(sysdate,-1),'MM')||'/'||
                                             TO_CHAR(ADD_MONTHS(sysdate,-1),'YYYY)
    PS : pense aux balises code

  9. #9
    Futur Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Merci beauuuucoup

    ca a l'air si simple vu comme ca

  10. #10
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    mais c'est parce que ça l'est

    merci de pense au bouton [Résolu]

  11. #11
    Futur Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Juste pour confirmer

    j'ai pas besoin de mettre case ....end pour mon dacalleg sur le mois ?

    to_char(dtobs,'MM')=TO_CHAR(ADD_MONTHS(sysdate,-1),'MM')

    suffit ? Oracle fait automatiquement le retour de janvier à décembre

  12. #12
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    je te confirme

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

Discussions similaires

  1. probleme de date avec mktime et gmtime
    Par firejocker dans le forum MFC
    Réponses: 2
    Dernier message: 12/04/2010, 13h57
  2. Acces probleme de Date avec Between
    Par kahya dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 03/05/2007, 16h26
  3. Probleme Affichage Panel avec Changement Résolution
    Par devlopassion dans le forum C++Builder
    Réponses: 5
    Dernier message: 11/01/2007, 20h30
  4. Probleme insertion date avec un champ datetime
    Par locs dans le forum MS SQL Server
    Réponses: 24
    Dernier message: 24/09/2006, 12h19
  5. Probleme de date avec mysql: pas de date par defaut stp!
    Par kenny49 dans le forum Requêtes
    Réponses: 4
    Dernier message: 01/07/2006, 11h25

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