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 :

[8i] filtrer les dates 01/01/9999


Sujet :

SQL Oracle

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Points : 9
    Points
    9
    Par défaut [8i] filtrer les dates 01/01/9999
    Bonjour,

    Sur la requête SELECT qui donne le résultat suivant, je voudrais séléctionner uniquement les enregistrements dont le champ Date est égal à 01/01/9999.

    ----------------------------------------
    Num Date
    --------- -------------------
    620620 01/01/9999 00:00:00
    620621 01/01/9999 00:00:00
    620622 05/04/2007 00:00:00
    620623 12/04/2007 00:00:00
    620623 12/04/2007 00:00:00
    ----------------------------------------

    J'ai essayé :
    WHERE Date = to_date('01/01/9999','DD/MM/YYYY')
    WHERE Date = '01/01/9999'
    WHERE Date = '01/01/9999 00:00:00'
    ...


    Mais sans succés...
    Pouvez-vous m'aider, merci ?

    Mon système : Windows NT4, Oracle 8i, Sql*Plus ou Aqua Data Studio

  2. #2
    Membre averti Avatar de LBO72
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 406
    Points : 342
    Points
    342
    Par défaut
    Peut-être que ton format date sous Oracle n'est pas en français. Essaye
    de faire avant ton selecte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alter session set nls_date_format = 'DD/MM/YYYY'
    Salut.
    LBO72

  3. #3
    Membre chevronné Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Points : 2 071
    Points
    2 071
    Par défaut
    essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WHERE trunc(Date) = to_date('01/01/9999','DD/MM/YYYY')
    Garuda गरूड
    Brahmâ la Guerre et Vishnu la Paix

    Oracle 12C R2 - Forms11GR2 - Toad 12 - sharePoint 2010

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Ca ne fonctionne pas.
    Quelques précisions :
    Le résultat de SELECT * FROM NLS_SESSION_PARAMETERS est :

    PARAMETER VALUE
    ----------------------- ------------------------------
    NLS_LANGUAGE FRENCH
    NLS_TERRITORY FRANCE
    NLS_CURRENCY F
    NLS_ISO_CURRENCY FRANCE
    NLS_NUMERIC_CHARACTERS ,.
    NLS_CALENDAR GREGORIAN
    NLS_DATE_FORMAT DD/MM/RR
    NLS_DATE_LANGUAGE FRENCH
    NLS_SORT FRENCH
    NLS_TIME_FORMAT HH24:MI:SSXFF
    NLS_TIMESTAMP_FORMAT DD/MM/RR HH24:MI:SSXFF
    NLS_TIME_TZ_FORMAT HH24:MI:SSXFF TZH:TZM
    NLS_TIMESTAMP_TZ_FORMAT DD/MM/RR HH24:MI:SSXFF TZH:TZM
    NLS_DUAL_CURRENCY ¿
    NLS_COMP BINARY



    Le format des résultats est différent suivant le logiciel de requête :
    Sous Aqua Data Studio : 01/01/9999 00:00:00
    Sous SQL*Plus Worksheet : 01/01/99

    Merci pour vos réponses.

    Samuel

  5. #5
    Membre chevronné Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Points : 2 071
    Points
    2 071
    Par défaut
    Ne serait_ce pas du au fait que ton champ s'appelle "date" (mot reservé)
    Essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    where "date"=to_date('01/01/9999','DD/MM/YYYY')
    Garuda गरूड
    Brahmâ la Guerre et Vishnu la Paix

    Oracle 12C R2 - Forms11GR2 - Toad 12 - sharePoint 2010

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    En fait mon champ ne s'appelle pas "date". C'est pour simplifier que je l'ai nommé comme cela sur le forum.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Autre précision, ça fonctionne pour les autres valeurs, par exemple :
    SELECT T$ORNO,T$DDTC FROM TTDPUR041500 Where T$DDTC = TO_DATE('12/04/2007') ;

    La valeur 01/01/9999 semble être particulère.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Voilà ce que j'ai découvert :
    la requête : SELECT min(T$DDTC) FROM TTDPUR041500 ;
    donne : 01/01/9999

    J'arrive à filtrer avec la requête suivante :
    SELECT T$ORNO,T$DDTC FROM TTDPUR041500
    Where T$DDTC = (SELECT min(T$DDTC) FROM TTDPUR041500);

    Mais ça n'est pas très "propre".

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 45
    Points : 37
    Points
    37
    Par défaut
    Est-ce que tu peux essayer en faisant le contraire, c'est-à-dire en convertissant tout en chaîne de caractères :
    WHERE TO_CHAR(ma_date, 'DD/MM/YYYY') = '01/01/9999'

    A mon avis ce n'est pas un problème de paramètres, car justement le but des fonctions TO_CHAR et TO_DATE est de forcer à avoir un format donné.

    Par contre, il me semble qu'une date Oracle va de l'an -4712 à l'an +4712, ce qui signifierait que la date 9999 n'existe pas. Après, comment a t-elle été créée sans problème, je ne sais pas.

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Merci pour ton aide.
    En fait, la fonction TO_CHAR(T$DDTC,'DD/MM/YYYY') me renvoi 00/00/0000

    du coup en filtrant avec to_char(T$DDTC,'DD/MM/YYYY') = '00/00/0000',
    j'obtiens ceci :

    T$ORNO T$DDTC TO_CHAR(T$DDTC,'DD/MM/YYYY')
    --------- ------------------- -------------------------------
    620620 01/01/9999 00:00:00 00/00/0000
    620621 01/01/9999 00:00:00 00/00/0000

    ça réponds tout à fait à mon problème. Bravo et encore merci

    Pour répondre à ton interrogation, la valeur 01/01/9999 est attribuée lorsque aucune valeur n'est renseignée pour un champ date dans notre ERP (BaaN IV).

  11. #11
    Membre averti Avatar de LBO72
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 406
    Points : 342
    Points
    342
    Par défaut
    Et si tu essayes un truc du genre :

    WHERE ma_date like '%9999%'

    Je sais que ça va être gourmant, mais elle ne le sera pas plus qu'avec ta conversion to_char, to_date

    A+
    LBO72

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Non ça ne fonctionne pas ,ni T$DDTC like '%0000%'

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 45
    Points : 37
    Points
    37
    Par défaut
    C'est curieux de mettre 9999 comme valeur lorsque vous n'avez aucune valeur. La valeur NULL est faite pour ça. Mais bon, j'imagine que dans votre appli vous n'avez pas trop le choix.

    Je pense que les résultats suprenants sont dus au fait que l'année 9999 n'est pas sensée exister, d'après le format de date Oracle (qui ne va théoriquement que jusqu'en 4172), ta date 9999 n'est donc pas valide.
    Je pense que si vous aviez 3333 ou 0000 il n'y aurait pas de problème.

  14. #14
    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
    0000 n'est pas une année correcte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT TO_DATE('01.01.0000', 'DD.MM.YYYY')
    FROM dual
     
    ORA-01841: année (complète) doit être comprise entre -4713 et +9999,
    et être différente de 0
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  15. #15
    Membre chevronné Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Points : 2 071
    Points
    2 071
    Par défaut
    C'est un peu normal ! Il y a une année 1 avant JC, 1 apres JC mais pas 0 !!
    Garuda गरूड
    Brahmâ la Guerre et Vishnu la Paix

    Oracle 12C R2 - Forms11GR2 - Toad 12 - sharePoint 2010

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

Discussions similaires

  1. Filtrer les Dates = à hier
    Par Aziraphal dans le forum Débuter
    Réponses: 2
    Dernier message: 14/02/2014, 08h02
  2. filtrer les dates?
    Par 3alit dans le forum WinDev
    Réponses: 3
    Dernier message: 15/05/2012, 18h32
  3. Filtrer les dates
    Par chougadosu dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 01/12/2011, 12h43
  4. vba - filtrer les éléments de la date
    Par "Rone" dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 07/10/2008, 11h54
  5. Filtrer les dates d'un datetimepicker
    Par bertrand_declerck dans le forum Composants VCL
    Réponses: 21
    Dernier message: 23/09/2005, 17h04

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