Kalenderwochenberechnung in MS-SQL 2000

StefanLausL

Erfahrenes Mitglied
Hallo !

Ich habe ein Skript das die Anzahl der offenen Aufträge nach Kalenderwoche berechnen soll.
Nun da bald Jahreswechsel ist läuft das Skript auf Fehler:

Da die Kalenderwochenberechnung ja nicht mit
print DATEPART( wk,'07.11.06' ) funktioniert habe ich es mir im Skript
einfach gemacht und print DATEPART( wk,'07.11.06' ) -1
ausgelesen.
Nun wie gesagt das funktioniert nur bis 31.12.06 danach würde als Ergebnis auch mal
die Kalanderwoche 0 ausgegeben werden.
Nun habe ich die Funktion SET DATEFIRST gefunden.
Allerdings weiss ich nichts mit der anzufangen.
Manchmal stimmt die Kalaenderwochenberechnung und manchmal nicht.
Wie muss ich mit der Funktion umgehen, bzw. ich habe auch gelesen das man auch eine Funktion schreiben kann die die KW nach Din Norm berechnet.
Allerdings weiss ich nicht wie ich eine Funktion in MS-SQL schreibe, bzw. diese dann im Skript aufrufen kann.

Für eine Hilfe wäre ich sehr dankbar !
 
So ich hab nun eine Funktion die das korrekt berechnen soll:




ALTER FUNCTION ISOweek (@DATE datetime)
RETURNS int
AS
BEGIN
DECLARE @ISOweek int
SET @ISOweek= DATEPART(wk,@DATE)+1
-DATEPART(wk,CAST(DATEPART(yy,@DATE) as CHAR(4))
+'0104')
--Special cases: Jan 1-3 may belong to the previous year
IF (@ISOweek=0)
SET @ISOweek=dbo.ISOweek(CAST(DATEPART(yy,@DATE)-1
AS CHAR(4))+'12'+ CAST(24+DATEPART(DAY,@DATE) AS
CHAR(2)))+1
--Special case: Dec 29-31 may belong to the next year
IF ((DATEPART(mm,@DATE)=12) AND
((DATEPART(dd,@DATE)-DATEPART(dw,@DATE))>= 28))
SET @ISOweek=1
RETURN(@ISOweek)
END

Wie kann ich diese Funktion in einem SELECT Statement aufrufen ?
 
Zurück