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 :

decode (to_date() to_char())


Sujet :

SQL Oracle

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 154
    Points : 84
    Points
    84
    Par défaut decode (to_date() to_char())
    Bonjour

    J'ai un souci avec les dates dans ma requettes . En fait j'ai un formulaire de recherche par date . Celle-ci peut peut etre soit le Mois entré sous le format YYYYMM soit la date du début sous format (YYYYMMDD) et /Ou date de Fin (YYYYMMDD: cette dernière est remplacée par sysdate s'il n'a pas été renseignée). Mon problème c'est qu'on je rentre la date du début et /ou la date de fin : j'ai BIEN le Résultat Souhaité..Par Contre lorsque je rentre la date de mois sous formatat 'YYYYMM' je n'ai aucun résultat (alors que je devais en Avoir)... Voici ma requette :

    Code sql : 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
    17
    18
    19
     
    $query_select="
    Select t.rcv_no,c.dat_cde,t.date_exped,c.reference
    FROM cde_commande_client c
    ,cde_commande_suivi_trsp t
    where 
    c.COD_CDE=T.COD_CDE 
    AND
    ( 
    dat_cde>= DECODE('".$MOIS."','',to_date('".$DATE_DEBUT."','YYYYMMDD'),to_date('".$MOIS."','YYYYMM'))
    AND
    dat_cde<=
    DECODE('".$MOIS."','',to_date(nvl('".$DATE_FIN."',to_char(sysdate,'YYYYMMDD')),'YYYYMMDD'),
    to_char(sysdate,'YYYYMM') )
     
      )
    AND t.rcv_no=to_number(nvl('".$RCV."',trim(to_char(t.rcv_no))))
     
    "

    Il me semble que mon problème est situé ay niveau du format de Mois (to_date) , lorsque je remplace to_date par to_char j'au une erreur de format.
    j'ai aussi essayé to_date( to_char(),'') mais celle ci ne donne pas de résultat ni erreur .


    Merci de m'aider là dessus.

    Cordialement

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 154
    Points : 84
    Points
    84
    Par défaut
    Bonjour
    Je voulais ajouter un exemple de données de date stocké :
    exemple :
    13/03/2009 16:41:53


    Merci

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Essayez avec cette requête-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    select
        t.rcv_no, c.dat_cde, t.date_exped, c.reference
    from
        cde_commande_client c
        inner join cde_commande_suivi_trsp t
          on t.cod_cde = c.cod_cde
    where
        dat_cde >= coalesce(to_date(".$MOIS.", 'yyyymm'), to_date('".$DATE_DEBUT."', 'yyyymmdd'))
    and dat_cde <  coalesce(add_months(to_date(".$MOIS.", 'yyyymm'), 1), to_date('".$DATE_FIN."', 'yyyymmdd')+1, sysdate)
    and t.rcv_no = to_number(nvl('".$RCV."', trim(to_char(t.rcv_no))))

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 154
    Points : 84
    Points
    84
    Par défaut
    Bonjour

    Merci pour votre réponse.
    Voilà j'ai essayé votre requette, cepandant j'ai l'erreur suivante d'oracle:
    ORA-01722: Nombre non valide ...

    Il me semble que cette une erreur de conversion de format?



    Amicalement

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Cette erreur concerne votre condition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    t.rcv_no=to_number(nvl('".$RCV."',trim(to_char(t.rcv_no))))
    Je n'y ai pas touché car je ne connais pas vos données.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 154
    Points : 84
    Points
    84
    Par défaut
    Bonjour


    En fait malgrès que j'ai supprimé la dernière condition (rcv) , j'obtient seulement un résultat lorsque je rentre le Mois (en plus il me de donne que le mois choisi c'est à dire si je tape 200902 il me sort que les donnés du mois 02 et pas celles du mois en cours ) ...sinon message d'erreur lorsque je choisi en fonction d'une date de début ou de fin.

    Je vais tenter de faire autrement .. merci
    Amicalement

  7. #7
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Oui vos remarques sont normales je n'avais pas compris celà dans votre besoin, je pensais qu'en cherchant par mois vous vouliez les données de ce mois et non pas à partir de ce mois.

    Essayez avec cette requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT
        t.rcv_no, c.dat_cde, t.date_exped, c.reference
    FROM
        cde_commande_client c
        INNER JOIN cde_commande_suivi_trsp t
          ON t.cod_cde = c.cod_cde
    WHERE
        dat_cde >= nvl(to_date(".$MOIS.", 'yyyymm'), to_date('".$DATE_DEBUT."', 'yyyymmdd'))
    AND dat_cde <  nvl(to_date('".$DATE_FIN."', 'yyyymmdd')+1, sysdate)
    Par contre l'erreur avec DATE_DEBUT / DATE_FIN me surprend.
    Quel est le message d'erreur exactement ?

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 154
    Points : 84
    Points
    84
    Par défaut
    Bonjour

    En fait lorsque je choisi la date debut et date de fin j'ai l'erreur suivante :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    ORA-00936: expression absente .


    Merci pour l'aide.


    Amicalement

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 154
    Points : 84
    Points
    84
    Par défaut
    sinon lorsque je choisi le Mois , cette fois_ci j'ai bien les résultats souhaité.

    Cordialement

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 154
    Points : 84
    Points
    84
    Par défaut
    Bonjour

    La dernière requette qu'on m'as proposé me semble bonne mais moi aussi je ne sais pas pourquoi n'as t'elle pas fonctionner..

    J'ai du corrigé du coup ma requette .. elle est bidouillée c'est vrais mais ça me donne le résultat souhaité..

    Merci en tous pour votre Aide.

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    dat_cde>= DECODE('".$MOIS."','',to_date('".$DATE_DEBUT."','YYYYMMDD'),to_date('".$MOIS."','YYYYMM'))
    AND
    dat_cde<=
    DECODE('".$MOIS."','',to_date(nvl('".$DATE_FIN."',to_char(sysdate,'YYYYMMDD')),'YYYYMMDD'),
    sysdate )

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

Discussions similaires

  1. [UDF] Firebird : Fonctions to_char, to_date, to_number
    Par pascal_legrand dans le forum SQL
    Réponses: 3
    Dernier message: 06/03/2011, 22h37
  2. TO_CHAR et TO_DATE
    Par Louis-Guillaume Morand dans le forum SQL
    Réponses: 6
    Dernier message: 11/03/2008, 14h53
  3. fonction to_date??
    Par Anonymous dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 20/09/2007, 14h41
  4. [DB2] IF ou DECODE
    Par chrisdvp dans le forum DB2
    Réponses: 2
    Dernier message: 27/06/2004, 14h44
  5. Problème avec To_date
    Par fanch17 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 14/08/2003, 12h34

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