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 :

Order by Date typé comme un varchar


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Par défaut Order by Date typé comme un varchar
    Bonjour,

    Sur ma requète je dois faire un order by sur un champ de type varchar, mais les valeurs du champ sont sencées etre de type date: jj/mm/yyyy.

    La meilleure solution, sans faire un alter table me parait etre d'ajouter un autre champ dans la requete, de lui mettre en to_date puis de faire l'order by dessus. Sauf que, forcément il y a des données incoérentes et donc la requète échoue.


    Comment dois-je m'y prendre pour blinder ce cast ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT ...,
    TO_DATE(stock.dlv_stock,'DD/MM/YYYY') as "DLV/DLC", ...
    ...
    ORDER BY DLV/DLC

  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
    Crées une fonction qui te renvoie la date ou NULL si ce n'est pas une date

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE OR REPLACE FUNCTION F_TESTDATE (p_chardate IN VARCHAR2, p_format IN VARCHAR2 DEFAULT 'DD/MM/RRRR')
    RETURN DATE IS
    BEGIN
     RETURN TO_DATE(p_chardate, p_format);
    EXCEPTION WHEN OTHERS
    THEN RETURN NULL;
    END;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT ...,
    F_TEST_DATE(stock.dlv_stock,'DD/MM/YYYY') AS "DLV/DLC", ...
    ...
    ORDER BY F_TEST_DATE(stock.dlv_stock,'DD/MM/YYYY')

  3. #3
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 44
    Par défaut
    A mon avis tu dois faire un "alter table" c'est mieux.
    Sinon tu vas rencontrer des problèmes ulterieurement

  4. #4
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Par défaut Colonne changée
    Suite à vos remarques j'ai chagé le type de données de table

    Pour information j'ai fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ALTER TABLE stock  ADD tmp_dlv DATE;
    UPDATE   stock        SET  tmp_dlv= to_date(dlv, 'dd/mm/yyyy');
    UPDATE   stock        SET  dlv= null;
    ALTER TABLE stock   MODIFY dlv DATE;
    UPDATE  stock         SET  dlv= tmp_dlv;
    ALTER TABLE stock   DROP COLUMN tmp_dlv;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 25/11/2007, 19h32
  2. Comment faire un order by date après un DATE_FORMAT
    Par lodan dans le forum Requêtes
    Réponses: 2
    Dernier message: 21/04/2007, 15h53
  3. Effectuer un ORDER by numérique sur un champs Varchar
    Par G_Kill dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 22/11/2006, 20h26
  4. Date courante comme valeur par défaut
    Par joeyinbox dans le forum Débuter
    Réponses: 4
    Dernier message: 27/04/2006, 16h11
  5. [view]date systeme comme contrainte
    Par nytmare dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/10/2004, 18h54

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