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 :

Comment récupérer le jour de la semaine en fonction d'une date?


Sujet :

MS SQL Server

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    272
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 272
    Points : 114
    Points
    114
    Par défaut Comment récupérer le jour de la semaine en fonction d'une date?
    Bonjour bonjour,

    On m'a demandé de sortir une liste de données et de les mettre en forme mais une petite chose me résiste. J'ai un champ (de type INT) qui représente une année avec un numéro de semaine (format YYYYSS), par exemple 200815.

    J'aimerais trouver la date exacte correspondant au LUNDI de la semaine en question. pour le même exemple, le lundi de la semaine 15 de l'année 2008 est le lundi 7 avril!

    Pour ce faire j'ai ecrit une petite fonction qui est sensée me retourner cette date.. à mon avis mon seul soucis vient d'une instruction qui ne fait pas ce que j'aimerais qu'elle fasse (récupérer le jour de la semaine du 1er jour de l'an, l'instruction en question est celle juste en dessous du commentaire dans le code ci-dessous). Voici ma fonction :

    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
    45
    46
    47
    48
    49
    50
    51
    52
    SET ANSI_NULLS ON
    SET QUOTED_IDENTIFIER ON
    GO
     
     
    ALTER FUNCTION [dbo].[sp_Week_to_date]
    (
    	@LANC_SEM INT,
    	@LANC_ANNEE INT
    )
     
    RETURNS	DATETIME
     
    AS
    BEGIN
    	DECLARE @date AS DATETIME
    	DECLARE @temp AS VARCHAR (11)
    	DECLARE @new_annee AS DATETIME
    	DECLARE @new_jour AS INT
    	DECLARE @nbre_jour AS INT
    	DECLARE @nbre_sem AS INT
     
     
    	SELECT @temp = '01.01.' + STR(@LANC_ANNEE,4)
    	SELECT @new_annee = CONVERT(DATETIME, @temp, 104)
    	PRINT  @new_annee
            -- C'est l'instruction suivante qui me pose problème, j'aimerais ici récupérer le jour de la semaine du 1er jour de l'an, mais ça marche pas.. grrr
    	SELECT @new_jour = DATEPART(dw, @new_annee)
     
    	IF @new_jour > 4 
    		BEGIN
    			select @nbre_jour = @LANC_SEM * 7 + 1 - @new_jour
    			select @nbre_sem = 52
    		END
    	IF @new_jour < 4
    		BEGIN
    			select @nbre_jour = @LANC_SEM * 7 -6 - @new_jour
    			select @nbre_sem = 52
    		END
    	IF @new_jour = 4
    		BEGIN
    			select @nbre_jour = @LANC_SEM * 7 -6 - @new_jour
    			select @nbre_sem = 53
    		END
     
    	SET @date = DATEADD(d, @nbre_jour, @new_annee)
    	PRINT @date
     
    RETURN @date
    END
     
    GO
    Mis à part ça je crois (je dis bien je crois) que ma fonction est bien ficelée et qu'elle devrait fonctionner si pour autant j'arrivais à récupérer ce fameux jour du 1er jour de l'an.

    Merci d'avance pour votre aide..

    Julius

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    272
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 272
    Points : 114
    Points
    114
    Par défaut
    ouf.... ça passe....

    j'ai changé l'instruction qui me posait problème....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT @new_jour = DATEPART(dw, convert(DATETIME,@new_annee,104))
    et comme ça tout va bien

    A+ dans l'bus

    Julius

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

Discussions similaires

  1. [XL-2003] Comment afficher un n° de semaine en fonction d' une date
    Par MichaSarah dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 22/07/2010, 22h43
  2. Réponses: 1
    Dernier message: 06/11/2009, 13h52
  3. Réponses: 12
    Dernier message: 02/08/2009, 13h18
  4. Réponses: 3
    Dernier message: 25/03/2007, 18h03
  5. [Dates] comment récupérer le jour de la semaine ?
    Par magic8392 dans le forum Langage
    Réponses: 5
    Dernier message: 13/09/2005, 15h01

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