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 dans ma requête avec sysdate


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    661
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 661
    Par défaut Problème dans ma requête avec sysdate
    Bonjour,

    Dans mon where je dois faire une égalité à partir d'un champs date time avec une la date du jour.

    Voici ma requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    SELECT P.NOM,P.PRENOM,P.DTENAI,P.NUMNAT,P.TEL,P.RUE,CP.CODE,CP.LOCALITE, S.NUMDEM,S.NUMSUIVI,S.REFERENCE,S.NUMPAT,S.HEURE,S.NOMSALLE,S.NOMBOSS,S.NOMASSISTANT,S.URGENCE, S.HRESUIVI,S.HREARR, S.NUMRDV,S.NUMOBJ,S.NUMBOSS,S.NUMASSISTANT,S.SUIVI,S.NUMDESCRIPTION, S.DATAAG,S.COMPTERENDU, DM.TYPEHOSPI, 0 ISPE FROM SUIVI S,PATIENTS P,CDPOS CP,DEMANDES DM, DICTEE DI WHERE S.NUMPAT <> 0 AND S.DTEDEB = TO_DATE(sysdate) AND S.SUIVI IN ('ATT','ARR','SCA','ACC') AND (S.NUMSRV = 0 OR S.NUMSRV = 19253) AND (S.NUMSITE = 1 OR S.NUMSITE IS NULL) AND DM.NUMDEM = S.NUMDEM AND P.NUMPAT = S.NUMPAT AND CP.NUMCP = P.NUMCP AND DI.NUMPAT=P.NUMPAT AND DI.DTECRE=TO_DATE(sysdate)
    j'obtiens pas de résultat .....

    L'erreur se trouve sur l'égalité: DI.DTECRE=TO_DATE(sysdate)

    DTECRE est un champ datetime

    Avez vous une idée ??

    D'avance merci

  2. #2
    Membre Expert Avatar de ojo77
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2010
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 680
    Par défaut
    datetime n'est pas un type oracle
    il est inutile de faire to_date(sysdate), DI.DTECRE=sysdate suffit

  3. #3
    Membre éprouvé Avatar de pinocchio
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2002
    Messages : 795
    Par défaut
    si c'est une comparaison avec la date du jour pense plutôt à faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    trunc(DI.DTECRE)=trunc(sysdate)
    Sinon, tu vas comparer à la seconde près

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    661
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 661
    Par défaut
    OK merci de ton aide, donc voici ma requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    SELECT P.NOM,P.PRENOM,P.DTENAI,P.NUMNAT,P.TEL,P.RUE,CP.CODE,CP.LOCALITE, S.NUMDEM,S.NUMSUIVI,S.REFERENCE,S.NUMPAT,S.HEURE,S.NOMSALLE,S.NOMBOSS,S.NOMASSISTANT,S.URGENCE, S.HRESUIVI,S.HREARR, S.NUMRDV,S.NUMOBJ,S.NUMBOSS,S.NUMASSISTANT,S.SUIVI,S.NUMDESCRIPTION, S.DATAAG,S.COMPTERENDU, DM.TYPEHOSPI, 0 ISPE FROM SUIVI S,PATIENTS P,CDPOS CP,DEMANDES DM, DICTEE DI WHERE S.NUMPAT <> 0 AND S.DTEDEB = (sysdate) AND S.SUIVI IN ('ATT','ARR','SCA','ACC') AND (S.NUMSRV = 0 OR S.NUMSRV = 19253) AND (S.NUMSITE = 1 OR S.NUMSITE IS NULL) AND DM.NUMDEM = S.NUMDEM AND P.NUMPAT = S.NUMPAT AND CP.NUMCP = P.NUMCP AND DI.NUMPAT=P.NUMPAT AND trunc(DI.DTECRE)=trunc(sysdate)
    Mais j'ai toujours aucun résultat.

    Exemple de donnée dans DI.DTECRE: 27/08/2012 16:14:07

  5. #5
    Membre Expert Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Par défaut
    Sachant que sysdate va te renvoyer la date du jour, cad 28/08/2012 ... es-tu sur d'avoir cette date dans tes données.

    Es-tu sur que toutes conditions réunis te renvoient bien un résultat ?

    Il faudrait que tu mettes un jeu de donnée et le résultat attendu.

  6. #6
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Il vous reste
    AND S.DTEDEB = (sysdate)
    Formattez votre requête il n'est pas facile de lire une requête formatée sur une seule ligne!
    Attention trunc(champ_de_type_date) peut faire sauter un index présent sur ce champ. Souvent la solution à ce type de problème est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    champ_de_type_date >= trunc(sysdate) 
    And champ_de_type_date < trunc(sysdate) + 1

  7. #7
    Membre Expert

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2012
    Messages
    612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2012
    Messages : 612
    Par défaut
    Citation Envoyé par pinocchio Voir le message
    si c'est une comparaison avec la date du jour pense plutôt à faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    trunc(DI.DTECRE)=trunc(sysdate)
    Sinon, tu vas comparer à la seconde près
    Attention avec ce genre de chose qui empêche l'utilisation d'un éventuel index sur DI.DTECRE.
    Mieux vaut utiliser ce genre de syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DI.DTECRE BETWEEN TRUNC(SYSDATE) AND TRUNC(SYSDATE+1)

    jacko842, que voulez-vous faire ? Comparer la date "exacte" (à la seconde près) ? Comparer uniquement si c'est le même jour ?

    Par ailleurs, avec tous les filtres qu'il y a dans votre requête, c'est peut-être normal que rien ne soit renvoyé
    La question de la précision de la comparaison vaut également sur "S.DTEDEB = (sysdate)" (et d'ailleurs les parenthèses autour de sysdate sont inutiles).

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

Discussions similaires

  1. [A-07] Problème dans un formulaire avec une requète de selection
    Par oraclus dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 24/12/2008, 00h06
  2. [Access] Problème dans une requête SQL avec INNER JOIN ?
    Par bds2006 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/06/2006, 10h57
  3. Problème dans une requête SQL avec AS et ON ?
    Par bds2006 dans le forum Bases de données
    Réponses: 9
    Dernier message: 26/06/2006, 15h25
  4. PL/SQL, problème dans un curseur avec un insert
    Par yador dans le forum PL/SQL
    Réponses: 4
    Dernier message: 27/01/2006, 14h31
  5. problème dans une requête
    Par pierrOPSG dans le forum Langage SQL
    Réponses: 2
    Dernier message: 18/11/2005, 10h28

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