Bonjour,

Mon problème se trouve au niveau du code en rouge.
Ma fonction prend en paramètre une date et un moment de la journée. Il y a 4 moments possibles qui correspondent chacun à une colonne de ma table en BDD.
Par exemple, matinDebut contient les valeurs de l'horaire d'ouverture du matin pour chaque jour de la semaine.

Je souhaiterai donc construire ma requête de telle sorte que suivant le moment passé en paramètre, la requête va cherche l'horaire dans la colonne correspondante.
Mais ca ne marche pas !
Est-ce que quelqu'un peut m'aider ???

Merci d'avance

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
CREATE FUNCTION Fn
(
	@dateActu datetime
	@moment varchar(10)
)
RETURNS datetime
AS
BEGIN

	DECLARE @numDay VARCHAR(10)
	DECLARE @dateDeb datetime

	SET @numDay = CASE DATEPART(weekday, @dateActu)
					WHEN 1 THEN 'Lundi'
					WHEN 2 THEN 'Mardi'
					WHEN 3 THEN 'Mercredi'
					WHEN 4 THEN 'Jeudi'
					WHEN 5 THEN 'Vendredi'
				END

	SELECT @dateDeb =  CASE @moment
						WHEN 'matinD' THEN matinDebut
						WHEN 'matinF' THEN matinFin
						WHEN 'apremD' THEN apremDebut
						WHEN 'apremF' THEN apremFin
					END
				FROM dbo.plage_horaire WHERE jour = @numDay

	SET @dateDeb = DATEADD(year,DATEPART(year, @dateActu)-DATEPART(year, @dateDeb), @dateDeb)
	SET @dateDeb = DATEADD(month,DATEPART(month, @dateActu)-DATEPART(month, @dateDeb), @dateDeb)
	SET @dateDeb = DATEADD(day,DATEPART(day, @dateActu)-DATEPART(day, @dateDeb), @dateDeb)

	RETURN @dateDeb
END
GO