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 :

Comparaison avec to_char(x.date,'Day')


Sujet :

SQL Oracle

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2011
    Messages : 13
    Par défaut Comparaison avec to_char(x.date,'Day')
    Bonjour,

    dans l'une de mes requêtes que j’exécute sur une période avec une dateMin et dateMax j'ai besoin d'exclure les weekend ( samedi et dimanche )

    pour ce faire j'utilise la condition suivante:

    TO_CHAR(x.date,'Day') NOT IN ('Samedi','Dimanche')

    Le problème étant que cela exclut uniquement les Dimanche, en effet il semble que TO_CHAR(x.date,'Day') == 'Samedi' renvoie false même quand TO_CHAR(x.date,'Day') renvoie 'Samedi'

    Plus généralement j'ai testé sur tous les jours de la semaine, et la correspondance se déroule bien uniquement pour Mercredi,Vendredi et Dimanche c'est pourquoi je sollicite votre aide car je n'ai absolument aucune idée de la cause de ce "Bug".

    Merci d'avance pour votre aide.

    PS: pour exclure le samedi j'ai aussi essayé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TO_CHAR(x.date,'Day') <> 'Samedi'
    TO_CHAR(x.date,'Day') != 'Samedi'
    TO_CHAR(x.date,'Day') NOT LIKE 'Samedi'
    mais rien n'y fais .

  2. #2
    Membre Expert Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Par défaut
    En fait lorsque tu fais TO_CHAR(MaDate,'DAY') il te renvoie la valeur sous 8 caractères ce qui explique pourquoi seulement certains fonctionnent.

    Essaye donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TO_CHAR(MaDate,'DAY') like '%Samedi%'
    Cf : FAQ Oracle

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2011
    Messages : 13
    Par défaut
    évidement c'est la seule chose que j'ai pas testé. Parfait
    Merci

  4. #4
    Membre Expert
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Par défaut
    Solution bis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TRIM(TO_CHAR(MaDate,'DAY')) = 'Samedi'

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2010
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 412
    Par défaut
    Solution tout prete Oracle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TMP@MINILHC >select to_char(sysdate,'fmday')||'.' with_FM,to_char(sysdate,'day')||'.' without_FM from dual;
     
    WITH_FM    WITHOUT_FM
    ---------- ----------
    tuesday.   tuesday  .

  6. #6
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 47
    Par défaut
    Si le format du jour est destiné à une clause de sélection et non à l'affichage. Il est plus simple et intéressant d'utiliser le format 'D' pour le jour.

    Cela évite d'être dépendant des paramètres locaux, samedi et dimanche étant toujours (?) les 6ème et 7ème jours de la semaine.

    Cordialement,

  7. #7
    Membre Expert
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Par défaut
    Selon le paramétrage, le premier jour peut-être le Lundi ou le Dimanche donc se baser sur le rang du jour dans la semaine peut s'avérer tout à fait faillible aussi

  8. #8
    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
    Par contre rajouter le param NLS_DATE_LANGUAGE blindera le select, parce que sinon le résultat peut changer selon la base
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT 	TO_CHAR(SYSDATE,'fmday') ||'.' AS langue_NLS,
    	TO_CHAR(SYSDATE,'fmday', 'NLS_DATE_LANGUAGE=french') ||'.' AS francais
    FROM dual
     
    LANGUE_NLS	FRANCAIS
    tuesday.	mardi.

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2011
    Messages : 13
    Par défaut
    Très bien, merci à tous pour vos réponses !

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

Discussions similaires

  1. [2008] Comparaison avec plusieurs paramètres (Date)
    Par bibifoke dans le forum SSRS
    Réponses: 0
    Dernier message: 28/01/2014, 16h36
  2. Comparaison de dates avec to_char()
    Par killer Am dans le forum PL/SQL
    Réponses: 8
    Dernier message: 10/12/2008, 18h00
  3. Opérateurs de comparaison avec les dates
    Par gvdmoort dans le forum Requêtes
    Réponses: 5
    Dernier message: 12/01/2008, 19h41
  4. Comparaison avec les dates
    Par delavega dans le forum ASP
    Réponses: 3
    Dernier message: 29/05/2007, 11h07
  5. [Oracle] type date: comparaison avec l'année en cours
    Par zchallal dans le forum Langage SQL
    Réponses: 1
    Dernier message: 21/06/2006, 07h39

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