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
    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

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

    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
    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.

  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
    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.

  4. #4
    Membre expérimenté Avatar de DAB.cz
    Inscrit en
    Octobre 2006
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 221
    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
    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 )

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

    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
    Billets dans le blog
    4
    Par défaut
    Tu as aussi le type TIMESTAMP sous Oracle.

  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
    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