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

MS SQL Server Discussion :

[Date] Nom du jour ou numéro du jour


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 285
    Par défaut [Date] Nom du jour ou numéro du jour
    Bonjour,

    Je chercher à obtenir de façon certaine le nom du jour ou son emplacement dans la semaine ...

    Le but est de savoir que l'on est lundi et que donc il faut que je traite les enregistrement qui ont été marqué à traiter le lundi ... mais pour cela il faut que je sache que je suis lundi !

    J'ai bien vu la fonction DATENAME avec en paramètre dw dans la FAQ mais elle retourne le nom en français donc j'imagine que si en anglais ... ou autre je suis mal !

    Si quelqu'un a une idée ...

    Merci !

  2. #2
    Membre émérite
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 276
    Par défaut
    il faut utiliser DATEPART avec dw, ca va te retourner un chiffre entre 0 et 6 je crois, 0 correspond au dimanche, à vérifier, fait un test avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    declare @nombre int
     
    set @nombre = (DATEPART(dw,'une_date'))
    PRINT @nombre

  3. #3
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Par défaut
    En exploitant la méthode de HULK, vous pouvez créer une table jours de la semaine et utilisez les jointures pour vous retourner le nom de la journée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    SELECT T.DW, DAYNAME
    FROM (
    <div style="margin-left:40px"><div style="margin-left:40px">SELECT 1 AS DW,'LUNDI' AS DAYNAME
    UNION 
    SELECT 2,'MARDI'
    UNION 
    SELECT 3,'MERCREDI'
    UNION
    SELECT 4,'JEUDI'
    UNION 
    SELECT 5,'VENDREDI'
    UNION
    SELECT 6,'SAMEDI'
    UNION
    SELECT 7,'DIMANCHE'</div></div>) T JOIN (
    <div style="margin-left:40px">SELECT DATEPART(dw,GETDATE()) AS DW</div>) R ON T.DW=R.DW

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 285
    Par défaut
    Merci !

    Alors j'ai regardé tout cela et au final j'ai fait çà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    -- 1 Variable
    DECLARE @AUJ_ORG AS int
    DECLARE @AUJ AS int
     
    -- 2 Date du jour
    SELECT @AUJ_ORG = DATEPART(dw, @DTE)
     
    -- 3 Date décalé
    SET @AUJ = ((@AUJ_ORG + @@DATEFIRST)%7) -1
     
    -- 4
    print @AUJ
    En effet, j'ai vu dans la doc que le retour pouvait être décalé en fonction du paramétrage lié à @@DATEFIRST. Je pense que ma méthode fonctionne (testé rapidement).

    Je pense la tester plus en utilant le table jointe qui rend le tout bcp lisible !!

    Merci à tous les deux !

  5. #5
    Nouveau candidat au Club
    Profil pro
    gérant
    Inscrit en
    Avril 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 2
    Par défaut
    bonjour à tous et merci à ceux qui ont dégrossi la question...
    ça m'a bien aidé à répondre à la question 'je veux les chiffres de la semaine dernière'

    après compulsation intensive du site msdn, je vous propose mes élucubrations :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    select
     
    /* le codage de @@datefirst est immuable et commence a 1 = Lundi      */
    /*  jusqu'a 7 = Dimanche                                              */
    /*                                                                    */     
    /* datepart("dw",une_date) donne un rang de 1 à 7 par rapport         */
    /*  au jour vu dans @@datefirst                                       */
    /*                                                                    */     
    /* on fait -1 pour obtenir un décalage et on readditionne             */
    /*  la base @@datefirst quelle qu'elle soit : modulo 7 donnera        */
    /*  toujours les memes restes quelque soit @@datefirst systeme        */
    /*  (de 0 a 6, maintenant, avec 0 = Dimanche)                         */
     
    case
     when (@@datefirst + datepart("dw",getdate()) - 1 ) % 7 = 1 then 'Lundi' 
     when (@@datefirst + datepart("dw",getdate()) - 1 ) % 7 = 2 then 'Mardi' 
     when (@@datefirst + datepart("dw",getdate()) - 1 ) % 7 = 3 then 'Mercredi' 
     when (@@datefirst + datepart("dw",getdate()) - 1 ) % 7 = 4 then 'Jeudi' 
     when (@@datefirst + datepart("dw",getdate()) - 1 ) % 7 = 5 then 'Vendredi' 
     when (@@datefirst + datepart("dw",getdate()) - 1 ) % 7 = 6 then 'Samedi' 
     else 'Dimanche'
    end
       as nom_du_jour_courant,
     
    /* pour circuler dans la semaine, j'utilise l'encodage de @@datefirst */
    /* de 1 a 7 (qui, rappelons-le, est fixe) :                           */
     
    dateadd("dd", -(( (@@datefirst + datepart("dw",getdate()) - 1 ) % 7) - 1), getdate()) as lundi_semaine_en_cours,
    dateadd("dd", -(( (@@datefirst + datepart("dw",getdate()) - 1 ) % 7) - 2), getdate()) as mardi_semaine_en_cours,
    /* etc...                                                             */
     
     
    /* si je passe un lundi, lundi_semaine_en_cours = jour_de_passage,    */
    /*                       mardi_semaine_en_cours = demain,             */
    /*                       mercredi_semaine_en_cours = après-demain,    */
    /*                       etc...                                       */
    /* si je passe un mardi, lundi_semaine_en_cours = hier,               */
    /*                       mardi_semaine_en_cours = jour_de_passage     */
    /*                       mercredi_semaine_en_cours = demain,          */
    /*                       etc...                                       */
    /* etc...                                                             */
     
    'jml77' as author
    testé via BusinessObjects XI Designer (je sais, c'est tordu, mais bon, hein, j'ai que ça et faut que je m'y mette...)

    ensuite, dateadd("wk",-1,lundi_en_cours) pour ma borne inférieure, et hop !

    si ça peut aider quelq'un(e), youpi !

    jm.

    edit: j'ai encore parlé trop vite et le fait d'appliquer le décalage avant ou après le modulo (maitrebn) n'a aucun effet... bon, reste les commentaires et la syntaxe BO

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

Discussions similaires

  1. Date à partir du numéro du jour de l'année.
    Par saymon dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 29/05/2009, 11h18
  2. [Toutes versions] dates : numéros des jours en fonction du numéro de semaine ?
    Par krakov dans le forum VBA Access
    Réponses: 3
    Dernier message: 29/04/2009, 14h13
  3. Numéro du jour d'une date donnée
    Par Trunks dans le forum Windows
    Réponses: 5
    Dernier message: 28/01/2009, 12h11
  4. Retrouver une date à partir du numéro de jour
    Par jesusnavas dans le forum VB.NET
    Réponses: 4
    Dernier message: 01/08/2008, 11h06
  5. Réponses: 6
    Dernier message: 25/09/2006, 14h51

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