SET DATEFIRST en FONCTION

Je veux mettre DATEFIRST dans ma fonction, mais il n'est pas permis.

SET DATEFIRST 1

Je peux ajouter le code dans une SP et appelez le SP de la fonction, mais je ne suis pas désireux de le faire.

Je peux mettre le DATEFIRST avant que j'appelle ma fonction, mais je ne suis pas désireux de le faire ainsi.

Tout autre travail?

MODIFIER

Ci-dessous le code que je veux utiliser ma FONCTION pour renvoyer le nombre total de jours ouvrés du mois. Mais je ne peux pas ajouter ce code dans la FONCTION, car de mon DATEFIRST

DECLARE @my int
DECLARE @myDeduct int
DECLARE @day INT
DECLARE @mydate DATETIME
DECLARE @TotalDays INT

SET @mydate = GETDATE()

SET @myDeduct = 0
IF (@@DATEFIRST + DATEPART(DW, @mydate)) % 7 not in (0,1)
SET DateFirst 1 -- Set it monday=1 (value)

--Saturday and Sunday on the first and last day of a month will Deduct 1
IF (DATEPART(weekday,(DATEADD(dd,-(DAY(@mydate)-1),@mydate))) > 5)
SET @myDeduct = @myDeduct + 1

IF (DATEPART(weekday,(DATEADD(dd,-(DAY(DATEADD(mm,1,@mydate))),DATEADD(mm,1,@mydate)))) > 5)
SET @myDeduct = @myDeduct + 1

SET @my = day(DATEADD(dd,-(DAY(DATEADD(mm,1,@mydate))),DATEADD(mm,1,@mydate)))

Set @TotalDays = (select (((@my/7) * 5 + (@my%7)) - @myDeduct))

Select @TotalDays
Vous pourriez peut-être retravailler la logique de votre fonction, de manière à ne dépendent pas de set datefirst?
Quel est votre vrai problème, pas la solution que vous proposez?
Veuillez voir ci-dessus, j'ai ajouté mon code pour expliquer comment je veux l'utiliser.

OriginalL'auteur Etienne | 2012-09-19