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 :

Select sur mois années oracle


Sujet :

SQL Oracle

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 51
    Points : 28
    Points
    28
    Par défaut Select sur mois années oracle
    Bonjour,
    je veux faire un select dans une Table "TableA" pour ne pas prendre les lignes pour lesquelles la colonne "MOISANNEES" est antérieur à 48 mois d'historique.
    Le format de la colonne se présente "MMYYYY", par exemple pour janvier 2014 j'ai dans la colonne "012014" .
    Je travaille sur Oracle.
    Merci d'avance.

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    Puisque vous postez dans le forum Langage SQL, on va traiter ça en SQL nomalisé, indépendant d'Oracle.

    Cette requête permet d'obtenir l'année et de la convertir en entier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT CAST(SUBSTRING(MOISANNEE, 3, 4) AS INTEGER) AS annee
    FROM TableA
    Dès lors, vous pouvez interroger votre table en jouant avec cette formule dans le WHERE.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT les_colonnes_necessaires_et_pas_etoile
    FROM TableA
    WHERE CAST(SUBSTRING(MOISANNEE, 3, 4) AS INTEGER) > EXTRACT(YEAR FROM CURRENT_DATE) - 5
        AND CAST(SUBSTRING(MOISANNEE, 1, 2) AS INTEGER) = EXTRACT(MONTH FROM CURRENT_DATE)
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 51
    Points : 28
    Points
    28
    Par défaut
    Merci pour votre réponse.
    J'ai seulement remplacé SUBSTRING par SUBSTR et >= pour les dates.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT MOISANNNES
    FROM TableA
    WHERE CAST(SUBSTR(MOISANNNES, 3, 4) AS INTEGER) > EXTRACT(YEAR FROM CURRENT_DATE) - 5
        AND CAST(SUBSTR(MOISANNNES, 1, 2) AS INTEGER) >= EXTRACT(MONTH FROM CURRENT_DATE);

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 383
    Points
    18 383
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Puisque vous postez dans le forum Langage SQL, on va traiter ça en SQL nomalisé, indépendant d'Oracle.
    Sujet déplacé !

    Du coup on peut proposer une solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
      FROM TableA
     WHERE to_date(MOISANNNES, 'mmyyyy') > sysdate - interval '48' month;

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

Discussions similaires

  1. [XL-2013] somme.si.ens selection uniquement sur mois et année
    Par rehugg dans le forum Excel
    Réponses: 3
    Dernier message: 11/10/2014, 18h33
  2. SELECT sur une vue ORACLE (ZendFramework)
    Par Kevin91260 dans le forum Zend Framework
    Réponses: 2
    Dernier message: 22/07/2014, 09h28
  3. [MVC] Date sur 3 champs (select) Jour / mois / année
    Par garthos dans le forum Spring Web
    Réponses: 0
    Dernier message: 21/09/2013, 10h43
  4. selection en fonction du mois à cheval sur 2 années
    Par Tommy57 dans le forum Développement
    Réponses: 6
    Dernier message: 06/07/2010, 22h09
  5. [DB2] Sélection sur Mois/Année (champs séparés)
    Par Mynautor dans le forum Langage SQL
    Réponses: 8
    Dernier message: 04/05/2006, 14h07

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