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 :

TO_CHAR et TO_DATE


Sujet :

SQL Oracle

  1. #1
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut TO_CHAR et TO_DATE
    Bonjour,

    j'ai une colonne de type Date qui contient des données au format datetime comme par exemple "07/03/2008 00:00:00". Appelons cette colonne "madate".
    Pourquoi n'ai-je pas le même résultat avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TO_CHAR(madate,'DD/MM/YYYY')
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TO_DATE(madate,'DD/MM/YYYY')
    la première me ressort "07/03/2008" ce qui est ce que je veux mais qui utilise TO_CHAR (et je sais pas si c'est bien) et la seconde me retourne "07/03/0008" ce qui me plait pas du tout.

    Quelqu'un pourrait-il m'expliquer pourquoi une méthode dédiée au traitement des dates ne fonctionne-t-elle pas? et comment il fait passer de "2008" à "0008"?

    merci d'avance
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  2. #2
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    L'éternelle erreur de compréhension.

    Un DATE est une DATE.
    Une Chaine de Caractère est une chaine de caractère.

    TO_DATE transforme une chaine de caractère en une date
    TO_CHAR transforme une date en une chaine de caractère

    Utiliser un to_date sur une date ne veut rien dire.
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  3. #3
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    d'une certaine façon, ça me semble logique, de l'autre, ça ne me convient pas forcément.
    1- pourquoi le to_date se trompe?
    2- le problème avec le to_char est que via ma DAL (.Net) je récupère une colonne typée de type string et non date.


    en tout cas, maintenant, ca me semble plus clair merci.
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  4. #4
    Membre actif Avatar de DAB.cz
    Inscrit en
    Octobre 2006
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 221
    Points : 249
    Points
    249
    Par défaut
    Citation Envoyé par Louis-Guillaume Morand Voir le message
    une colonne de type Date qui contient des données au format datetime comme par exemple "07/03/2008 00:00:00
    la colonne est de type Date, aucun format!!!

    to_char créé varchar2 de date
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    varchar2 := TO_CHAR(date, 'DD/MM/YYYY')
    et to_date créé date de varchar2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    date := TO_DATE(varchar2, 'DD/MM/YYYY')
    Passer date à to_date fonctionne grâce à conversion implicite (d'après NLS)

  5. #5
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    la colonne est de type Date, aucun format!!!
    oui, enfin je me comprend car sur certains SGBD, on a des colonnes de type Date et d'autres de type DateTime (pas ma faute si Oracle n'en gère qu'un seul )
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  6. #6
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Tu as aussi le type TIMESTAMP sous Oracle.
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  7. #7
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    Citation Envoyé par Louis-Guillaume Morand Voir le message
    oui, enfin je me comprend car sur certains SGBD, on a des colonnes de type Date et d'autres de type DateTime (pas ma faute si Oracle n'en gère qu'un seul )
    bonne remarque!

    bon, pour enlever la partie time tu peux employer TRUNC(date)

+ 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. decode (to_date() to_char())
    Par sami117 dans le forum SQL
    Réponses: 9
    Dernier message: 17/03/2009, 17h46
  3. fonction to_date??
    Par Anonymous dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 20/09/2007, 14h41
  4. Probleme avec fct° To_Char
    Par the_edge dans le forum Oracle
    Réponses: 5
    Dernier message: 17/02/2005, 10h45
  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