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 :
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.
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
Merci d'avance pour votre aide..
Julius
Partager