Entwickler-Ecke

Datenbanken - Kalenderwoche und MS SQL Server 2000


KidPaddle - Mo 22.05.06 15:23
Titel: Kalenderwoche und MS SQL Server 2000
Hallo,

ich möchte in einem SQL anhand der Kalenderwoche eines Datum gruppieren, z. B.:

SQL-Anweisung
1:
2:
3:
4:
SELECT ISOWEEK(MEINDATUM) AS KW, COUNT(*) AS ANZAHL 
FROM DUMMY 
GROUP BY ISOWEEK(MEINDATUM)
ORDER BY ISOWEEK(MEINDATUM) DESC


Die eingebaut Funktion DATENAME(WEEK, MEINDATUM) ist leider nicht brauchbar, da es mir bei einigen Daten eine KW 53 ausgibt und diese Funktion von Sonntag bis Samstag und nicht von Monat bis Sonntag arbeitet.

Habe auch schon eine Stored Procedure, ISOWeek, gefunden, jedoch brauch ich die Funktion in einem SQL - Befehl und das geht mit Stored Proceduren nicht.

Der MS SQL Server 2000 ist Pflicht, ein Wechsel auf eine andere Datenbank ist nicht möglich. Kann mir jemand eine Lösung für dies Problem geben.

Gruß
Thomas


espen - Di 23.05.06 13:38

Hallo,
hast Du es auch schon mit

SQL-Anweisung
1:
SELECT DATEPART(week, GETDATE())                    

probiert ?
Ggf. hilft Dir bei "falschen" Wochenangaben

SQL-Anweisung
1:
2:
SET DATEFIRST(...) 
SELECT @@DATEFIRST

weiter.

Grüßle.


KidPaddle - Mi 24.05.06 16:41


SQL-Anweisung
1:
SELECT DATEPART(week, GETDATE())                    


Ja, das habe ich schon probiert, aber es hilft mir leider nicht weiter. Viele Dank für deine Antwort, aber bisher habe ich noch keine zufriedenstellende Lösung gefunden. Kann man nicht im SQL Server eine Funktion schreiben und dann innerhalb eines SQL - Befehles aufrufen? Ich habe nichts gefunden.

Gruß
Thomas


espen - Fr 26.05.06 10:52

Hallo,

ich weiss nicht, ob ich Dich richtig verstehe.
Du kannst natürlich eine User-Defined erstellen (Hier ein Beispiel mit "komischem" Datepart)


SQL-Anweisung
1:
2:
3:
4:
5:
6:
CREATE FUNCTION fn_WeekOf(@aDate DateTime)
RETURNS int
AS
BEGIN
   RETURN (SELECT DATEPART(week,@aDate))
END


In Deiner Abfrage kannst Du dann die Ergebnisse der Funktion mit

SQL-Anweisung
1:
select dbo.fn_Weekof(getdate())                    

ermitteln.

Gruss,


KidPaddle - Fr 26.05.06 14:53

Danke, das wars. Hatte immer versucht das unter Stored Proceduren anzulegen, aber es gehörte nur in "Benutzer Definierte Funktionen" und schon ging es so wie ich es mir vorgestellt habe.

Vielen Dank.
Thomas