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

Langage SQL Discussion :

[Oracle 8] Critère de recherche string -> date


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 7
    Par défaut [Oracle 8] Critère de recherche string -> date
    Bonjour tout le monde,

    voici mon problème,

    j'ai cette requette

    SELECT CHOOSE FROM table1 WHERE DATE_CREATED>$vs_date_search$


    le problème c'est que dans la table "table1" le champ DATE_CREATED est au format texte (ex :01/01/2004) et que ma variable $vs_date_search$ est au format date (je récupère d'abord la date du moment avec un now() et ensuite je fais un LEFT(now(),10) pour obtenir 01/01/2004)

    donc quand j'exécute cette requette le tri n'est pas fait et il m'affiche tous les enregistrements.

    si possible j'aimerais savoir si il existe une fonction SQL qui permet de modifier au moment de la requete le type champ (du genre TO_DATE)

    NB : je ne peux pas modifier le type du champ


    merci tlm

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    Merci de respecter les règles du forum et d'indiquer votre SGBD...

  3. #3
    Rédactrice

    Avatar de Fleur-Anne.Blain
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 636
    Par défaut
    Tu as répondu toi même a ta question...Il existe bien une fonction To_date mais ca doit surement changer en fonction du SGBD.

    @+
    la culture c'est comme la confiture moins on en a plus on l'étale.

    Mes tutos

  4. #4
    Nouveau membre du Club
    Inscrit en
    Septembre 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 7
    Par défaut
    plus d'info (désolé pour l'oubli)

    environnement de travail : aspen manufacturing suite (AMS) v5.0.1
    serveur : oracle 8

    j'ai essayé entre temps de bidouiller avec le TO_DATE

    ex :

    SELECT CHOOSE FROM table1 WHERE TO_DATE DATE_CREATED = '01/01/2005'

    erreur : invalid relational operator

    je précise que je veux transformer le champ DATE_CREATED en type date
    sinon TO_DATE fonctionne si je l'utilise pour transformer une variable

  5. #5
    Rédactrice

    Avatar de Fleur-Anne.Blain
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 636
    Par défaut
    Oula, convertir en date la valeur d'n champ oui c'est possible, transformer juste pour une requête une colonne en date...c'est non.C'est au niveau de ta table qu'il faut faire ceci, a savoir que ton champ date-create sera toujours une date dans ce cas!!! a dsl je n'avais pas vu que tu ne pouvais pas modifier tes champs.

    Alors utilise to_date( la date, format date) pour ta requete...

    Un lien qui pourra peut-être t'aider: http://sheikyerbouti.developpez.com/...age=Chap3#L3.4
    la culture c'est comme la confiture moins on en a plus on l'étale.

    Mes tutos

  6. #6
    Nouveau membre du Club
    Inscrit en
    Septembre 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 7
    Par défaut
    j'avais comme l'idée que c'était pas possible et malheuresement je ne peux pas modifier le champ de cette table.

    Merci pour ta réponse trinity

  7. #7
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT CHOOSE
    FROM table1
    WHERE TO_DATE(DATE_CREATED,'DD/MM/RRRR') > $vs_date_search$
    Attention : il faut compléter cette idée avec un TRUNC si la variable $vs_date_search$ contient aussi les heures, minutes et secondes.

  8. #8
    Nouveau membre du Club
    Inscrit en
    Septembre 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 7
    Par défaut
    malheuresement cela ne marche pas, pb de différence de format toujours.

    En tout cas merci pour votre aide, j'opte pour une autre solution qui est de ne pas trié, besoin inchangé mais pas de solution technique


    bonne journée a tous

    merci magnus et trinity pour vos réponses

  9. #9
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    Vous parliez bien de tri ou s'agit-il de filtre (ie clause WHERE) ?

  10. #10
    Nouveau membre du Club
    Inscrit en
    Septembre 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 7
    Par défaut
    filtrer, mon clavier à fourché

  11. #11
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    ok

    Vous pouvez nous donner l'instruction SQL que vous exécuter et le message d'erreur qu'elle génère parce que ce n'est pas bien méchant normalement cette conversion de DATE <-> CHAR

  12. #12
    Xo
    Xo est déconnecté
    Membre Expert
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Par défaut
    À toutes fins utiles, vous pouvez jeter un oeil à la F.A.Q Oracle :

    Ces 2 QR en particulier devraient vous intéresser :
    - Comment tronquer une date avec la fonction TRUNC()
    - Formater les dates
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  13. #13
    Nouveau membre du Club
    Inscrit en
    Septembre 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 7
    Par défaut
    en effet la conversation n'est pas difficile, sauf que j'essai de transformer un champ et non une variable

    Je vais essayé d'être plus clair :

    J'ai une table avec un champ format texte qui contient une date
    Je cherche a filtrer ce champ avec une date, malheuresement comme le champ est au format texte, il ne comprend pas mon format date et donc ma requete affiche toutes les données de ce champ.

    sans TO_DATE j'obtiens donc tous les résultats présent dans le champ

    avec TO_DATE
    code :
    SELECT CHOOSE FROM table1 WHERE TO_DATE(DATE_CREATED,'dd/MM/yyyy')>$vs_date_search$

    après identification de la variable par le programme :
    SELECT CHOOSE FROM table1 WHERE TO_DATE(DATE_CREATED,'dd/MM/yyyy')>TO_DATE(SUBSTR('2006-03-08 00:00:00.0',1,19),'YYYY-MM-DD HH24:MI:SS')


    => j'obtiens le message d'erreur suivant :

    java.sql.SQLException: ORA-01858: a non-numeric character was found where a numeric was expected

    mais pas la peine de se prendre la tête je pensais qu'une fonction permetrai de modifier le type d'un champ lors de la requête (c'est beau de rêvé)

    bon week end tout le monde je pars du bureau d'ici peu

  14. #14
    Membre expérimenté
    Inscrit en
    Septembre 2006
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 142
    Par défaut
    il est possible qu'un enregistrement ne soit pas au format 'DD/MM/YYYY' d'ou l'erreur. Vérifiez le contenu du champ qu'il respect le format choisi pour les date

Discussions similaires

  1. [PowerShell] Recherche string dans une variable
    Par Seriale dans le forum Scripts/Batch
    Réponses: 6
    Dernier message: 07/02/2014, 14h32
  2. Algo recherche String
    Par npirard dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 05/02/2010, 14h47
  3. Réponses: 2
    Dernier message: 07/09/2009, 17h12
  4. Réponses: 1
    Dernier message: 03/09/2009, 16h33
  5. recherche string dans fichier html en shell
    Par lacassb01 dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 31/01/2008, 21h26

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