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