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

PL/SQL Oracle Discussion :

création d'une requête sql avec des date dans du pl/sql


Sujet :

PL/SQL Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 11
    Points : 11
    Points
    11
    Par défaut création d'une requête sql avec des date dans du pl/sql
    Bonjour je veux créer une procédure stockée en pl/sql. J'utilise la BDD oracle xe. Dedans j'ai une requête sql qui dois me retourner des données qui ont soit une date inférieure ou égal à 1 mois, soit une date inférieur ou égale à 15 jours ou soit inférieure ou égale à 7 jours. Tous cela par rapport à la date système.

    Voici ma requête qui ne marche pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT nomAdhérent , prenomAdhérent , libTerrain, heureRéserver, dateRéserver 
                     FROM adhérents a, réserver r, terrains t 
                     WHERE numAdhérent = numAdhérentRéserver 
                     AND numTerrainRéserver = numTerrain 
    				 AND dateRéserver = substr (sysdate,1,10) 
    				 OR dateRéserver BETWEEN sysdate-7 AND sysdate 
    				 OR dateRéserver BETWEEN sysdate-15 AND sysdate
                     OR dateRéserver BETWEEN sysdate-31 AND sysdate;

    Merci de votre aide.

  2. #2
    Membre averti Avatar de xdescamp
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 300
    Points : 442
    Points
    442
    Par défaut
    Le problème dans ta requête vient de l'absence de parenthèses. Elle devrait ressembler à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT nomAdhérent , prenomAdhérent , libTerrain, heureRéserver, dateRéserver
    FROM adhérents a, réserver r, terrains t
    WHERE numAdhérent = numAdhérentRéserver
    AND numTerrainRéserver = numTerrain
    AND (   dateRéserver = substr (sysdate,1,10)
          OR dateRéserver BETWEEN sysdate-7 AND sysdate
          OR dateRéserver BETWEEN sysdate-15 AND sysdate
          OR dateRéserver BETWEEN sysdate-31 AND sysdate);
    Ceci dit, d'après ton exemple, ton besoin se résume à "dateRéserver inférieure à 1 mois". Pour gérer la date inférieure ou égale à un mois, il vaut mieux utiliser la fonction ADD_MONTHS(...) plutôt que de compter 31 jours.
    Et pour éviter les problèmes d'heures, je pense qu'il te faut un TRUNC(...).
    Essaye ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT nomAdhérent , prenomAdhérent , libTerrain, heureRéserver, dateRéserver
    FROM adhérents a, réserver r, terrains t
    WHERE numAdhérent = numAdhérentRéserver
    AND numTerrainRéserver = numTerrain
    AND dateRéserver BETWEEN TRUNC (ADD_MONTHS (SYSDATE, -1)) AND TRUNC (SYSDATE);

Discussions similaires

  1. [AC-2003] Resultat de requête SQL avec des dates incorrect
    Par rockin-bones dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 19/05/2011, 14h35
  2. Requête paramétrée avec des dates
    Par The eye dans le forum Oracle
    Réponses: 4
    Dernier message: 21/01/2009, 15h20
  3. Sql avec des dates
    Par meddy dans le forum Langage SQL
    Réponses: 4
    Dernier message: 12/04/2007, 16h55
  4. Réponses: 3
    Dernier message: 16/12/2006, 12h59
  5. Réponses: 3
    Dernier message: 18/09/2006, 20h55

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