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 :

Convertir une chaine de caractères avec to_date()


Sujet :

SQL Oracle

  1. #1
    Membre régulier
    Inscrit en
    Juin 2008
    Messages
    394
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 394
    Points : 73
    Points
    73
    Par défaut Convertir une chaine de caractères avec to_date()
    bonjour

    je recupère une date depuis ma base de donnée et je la mis dans un string
    voici comment elle s'affiche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    2008-09-20 00:00:00.0
    pour l'insérer dans une requete je dois la convertir avec to_date voila comment j'ai déclaré :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    to_date('2008-09-20 00:00:00.0', 'yyyy-mm-dd HH24:MI:SS')
    mais il ne reconnais pas cette format ,par contre ça marche quand j'enleve le '0' aprés le point qui se trouve aprés les secondes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    to_date('2008-09-20 00:00:00', 'yyyy-mm-dd HH24:MI:SS')
    quelle format je dois déclarer pour que ça marche avec la date que j'ai ??

    merci de me répondre

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 77
    Points : 84
    Points
    84
    Par défaut
    Salut,

    Je n'ai pas trouvé de solution "simple" à ton problème car pour pouvoir traiter la partie ".0", j'ai été obligé de passer par un timestamp.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    select 
        to_date(
            to_char(
                   TO_TIMESTAMP ('2008-09-20 19:23:10.10',
                                 'yyyy-mm-dd HH24:MI:SS.FF'),
            'YYYY-MM-DD hh24:mi:ss'), 
        'YYYY-MM-DD hh24:mi:ss')
    from dual
    Si quelqu'un à une autre solution, cela m'intéresse aussi.

  3. #3
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Il y a t-il un raison rationnelle à convertir une date en char pour ensuite la reconvertir en date ?
    Si oui, dans la première conversion - To_Char() - donnez un format avec date et heure simple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    To_Char(ma_date,'dd/mm/yyyy hh24:mi:ss');
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 77
    Points : 84
    Points
    84
    Par défaut
    Le principal problème de john_wili est que le format qu'il reçoit en entrée n'est pas un format "standard" car il a des milli-secondes. Le seul moyen que j'ai trouvé de pouvoir tester ce format est de passer par un timestamp. Un autre serait de afire un substr de se chaîne en entrée pour supprimer les derniers caractères mais je en pense pas qu'il soit possible de convertir directement le char en date.

    Si c'est possible, ca m'intéresse aussi

  5. #5
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    je recupère une date depuis ma base de donnée et je la mis dans un string
    A priori, il s'agit bien d'abord d'une date.
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 77
    Points : 84
    Points
    84
    Par défaut
    S'il s'agit bien d'une date, je me demande alors comment il arrive à cet affichage:
    2008-09-20 00:00:00.0
    Imaginons qu'il reçoit ceci sous format texte et qu'il veut le transformer en date. Tu ferais comment SheikYerbouti? Je suppose qu'il y a un moyen plus simple que ce que j'ai fait et ca m'intéresse.

  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
    Si c'est un format texte fixe dont on est sûr de la provenance, on peut supprimer '.0', on peut faire un substring de 1 à 19, de 1 à longueur-2, de 1 à 10 même s'il n'y a jamais d'heure.

    Mais encore une fois, ça dépend vraiment de la confiance qu'on a dans les données reçues.

  8. #8
    Expert éminent sénior 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
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par dragon74 Voir le message
    S'il s'agit bien d'une date, je me demande alors comment il arrive à cet affichage:


    Imaginons qu'il reçoit ceci sous format texte et qu'il veut le transformer en date. Tu ferais comment SheikYerbouti? Je suppose qu'il y a un moyen plus simple que ce que j'ai fait et ca m'intéresse.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SQL> SELECT TO_CHAR(SYSTIMESTAMP, 'yyyy-mm-dd HH24:MI:SS.FF1') from dual;
     
    TO_CHAR(SYSTIMESTAMP,'YYYY-MM
    -----------------------------
    2008-10-27 18:35:15.4
     
    SQL> select to_timestamp('2008-09-20 00:00:00.0', 'yyyy-mm-dd HH24:MI:SS.FF1') from dual;
     
    TO_TIMESTAMP('2008-09-2000:00:00.0','YYYY-MM-DDHH24:MI:SS.FF1')
    ---------------------------------------------------------------------------
    20/09/08 00:00:00,000000000

Discussions similaires

  1. Réponses: 6
    Dernier message: 14/06/2006, 15h27
  2. [XSL] Convertir une chaine de caractère
    Par bahet dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 11/04/2006, 10h24
  3. Dégradé sur une chaine de caractères avec 3 a 4 couleurs
    Par avogadro dans le forum Composants VCL
    Réponses: 6
    Dernier message: 31/03/2006, 13h21
  4. Lecture d'une chaine de caractère avec fgets
    Par mayoouketchup dans le forum Langage
    Réponses: 9
    Dernier message: 22/12/2005, 16h17
  5. Réponses: 2
    Dernier message: 06/12/2002, 07h50

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