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

Oracle Discussion :

[Debutant][8i] Comparer des dates stockées en VARCHAR2


Sujet :

Oracle

  1. #1
    Membre chevronné

    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
    Points : 1 775
    Points
    1 775
    Par défaut [Debutant][8i] Comparer des dates stockées en VARCHAR2
    Bonjour tout le monde,

    Je cherche à comparer le contenu d'une colonne de type VARCHAR2(10) contenant des dates au format 'DD/MM/YYYY' avec une chaîne de caractère ayant un autre format : 'DD-MON-YYYY'.

    J'ai remarqué que si j'applique la fonction TO_DATE sur ces 2 colonnes SANS spécifier de format commun alors la comparaison s'opère :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT DISTINCT OC_DATLIM
    FROM PR1000
    WHERE TO_DATE(OC_DATLIM, 'DD/MM/YYYY') <= TO_DATE('31-Oct-2005', 'DD-MON-YYYY')
    Pour autant, est-ce que cette requête fait bien ce que je veux ?

    Sorry si ma question est enfantine pour vous mais je débute sous Oracle et je trouve la comparaison de dates / chaînes de caractères déstabilisantes...

    PS : derrière cette question je souhaiterais comprendre quand il faut utiliser TO_DATE, TO_CHAR, etc. pour comparer :
    - des DATE entre elles
    - des DATE avec des VARCHAR2
    - des VARCHAR2 entre eux...
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  2. #2
    Membre actif Avatar de hunter
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2004
    Messages : 208
    Points : 216
    Points
    216
    Par défaut
    je vois que je suis pas le seul qui débute

    mais question pourquoi une fois des "/" et une autre des "-" ???

    faut pas les convertire en un même format ???

  3. #3
    Membre chevronné

    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
    Points : 1 775
    Points
    1 775
    Par défaut
    Salut hunter,

    En fait je dois gérer des dates avec des formats différents et je me rends compte que Oracle ne me jette pas quand je compare avec des fonctions TO_DATE ayant des formats non uniformes.

    Depuis mon 1er post, je me suis aperçu que si les formats ne sont pas uniformes alors la requête ne retourne pas les données que j'attends :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT DISTINCT OC_DATLIM 
    FROM PR1000 
    WHERE TO_DATE(OC_DATLIM, 'DD/MM/YYYY') <= TO_DATE('31-Oct-2005', 'DD-MON-YYYY')
    ne retourne pas le même résultat que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT DISTINCT OC_DATLIM 
    FROM PR1000 
    WHERE TO_CHAR( TO_DATE(OC_DATLIM, 'DD/MM/YYYY'), 'DD/MM/YYYY' ) <= TO_CHAR( TO_DATE('31-Oct-2005', 'DD-MON-YYYY'), 'DD/MM/YYYY' )
    Là je suis en train de me demander si la fonction TO_DATE modifie l'affichage ou si elle change le type de données de la colonne passée en paramètre en type DATE ?

    Bref, je cherche à comprendre quand & comment s'utilisent les fonctions TO_DATE / TO_CHAR ?
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  4. #4
    Nouveau membre du Club
    Inscrit en
    Décembre 2003
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 44
    Points : 30
    Points
    30
    Par défaut
    Bonjour, l'utilisation de To_DATA va permettre de te retourner le bon resultat en transformant les chaines en date, comme ça la comparaison va être correcte.
    de ce qui est de TO_CHAR c'est pour le formattage.
    pour comparer deux date tu dois utiliser TO_DATE.
    En plus, tâche d'utiliser le type de données Date pour éviter ce genre de manip.

  5. #5
    Membre chevronné

    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
    Points : 1 775
    Points
    1 775
    Par défaut
    ok et merci pour ces infos

    Citation Envoyé par Challenger
    En plus, tâche d'utiliser le type de données Date pour éviter ce genre de manip.
    C'est justement ce que je ne peux plus faire : j'ai dû modifier tous les types de données des colonnes DATE en VARCHAR2 et du coup je me pose un paquet de questions sur la gestion des dates quand elles sont stockées sous forme de VARCHAR2.
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

Discussions similaires

  1. comparer des dates
    Par amel95140 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 22/03/2006, 16h39
  2. Comparer des dates en T-SQL
    Par AbyssoS dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 22/03/2006, 16h06
  3. [SQL2K] requête SQL, comparer des dates
    Par cortex024 dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 16/03/2006, 14h32
  4. Comparer des Dates (Access, jdbc)
    Par babylone7 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/07/2005, 10h01
  5. [Date] Comparer des dates au format mySQL "date
    Par Marc_P dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 25/10/2004, 15h15

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