Frage : Bestimmung der Zahl Arbeitstagen während eines spezifizierten Monats

Ich versuche, die folgende Funktion zu schreiben, um die Zahl Arbeitstagen in einem Monat festzustellen, aber ich habe Mühe mit einer Syntaxstörung.  Irgendwelche Vorschläge:

CREATE FUNKTION udf_integer_Returns_WorkingDaysInSpecifiedMonth (@MONTH INT, @YEAR INT)
RETURNS INT
AS
BEGIN
DECLARE @FIRSTDAY DATETIME
DECLARE @LASTDAY DATETIME
DECLARE @MONTHDAYS INT
DECLARE @RESULT INT
SELECT @MONTHDAYS = FALL
WENN @MONTH = 1 DANN 31
WENN @MONTH = 2 DANN 28
WENN @MONTH = 3 DANN 31
WENN @MONTH = 4 DANN 30
WENN @MONTH = 5 DANN 31
WENN @MONTH = 6 DANN 30
WENN @MONTH = 7 DANN 31
WENN @MONTH = 8 DANN 31
WENN @MONTH = 9 DANN 30
WENN @MONTH = 10 DANN 31
WENN @MONTH = 11 DANN 30
WENN @MONTH = 12 DANN 31
END

SET @FIRSTDAY = BEKEHRTER (DATUM/UHRZEIT, (BEKEHRTER (VARCHAR (2), @MONTH) + „/1/“ + BEKEHRTER (VARCHAR (4), @YEAR))
SET @LASTDAY = DATEADD (DD, @MONTHDAYS, @FIRSTDAY)
SET @RESULT = 0
IF @FIRSTDAY <= @LASTDAY
BEGIN
WHILE @FIRSTDAY <> @LASTDAY
BEGIN
SET @RESULT = @RESULT + FALL WENN DATEPART (WOCHENTAG, @FIRSTDAY) IN (1.7) DANN 0 SONST 1 END
SET @FIRSTDAY = DATEADD (D, 1, @FIRSTDAY)
END
END
RETURN @RESULT
END

Antwort : Bestimmung der Zahl Arbeitstagen während eines spezifizierten Monats

Traurige, geringfügige Änderung.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
-- TROPFEN-FUNKTION GetWorkdays 
FUNKTION GetWorkdays VERURSACHEN (
  @month int,
  @year int 
  ) RÜCKKEHR INT WIE ANFANGEN
  
	@result int erklären  
	@seedDate Datum/Uhrzeit erklären
	@SEEDDATE = DATEADD (DAS JAHR, @YEAR - 1900, 0) EINSTELLEN

	@RESULT = SUMME VORWÄHLEN (
	  FALL 
		 WENN DATEPART (Wochentag,   DATEADD (d, Zahl, @seedDate)) IN (1.7) 
		 DANN 0 
		 SONST 1 
		 ENDE
	  )
	  vom Meister. .spt_values
	  wo Art = „p“
	  und JAHR (DATEADD (d, Zahl, @seedDate)) = JAHR (@seedDate)
	  und MONAT (DATEADD (d, Zahl, @seedDate)) = @month
	Rückhol@result
ENDE
Weitere Lösungen  
 
programming4us programming4us