Ich empfehle nicht, eine View zu erstellen, oder die Funktion 'Datepart' zu verwenden. Der Grund ist der, das der
SQL-Server dann keinen Datums-Index mehr verwenden kann.
Ich habe eine allgemeine Datumsberechnungsklasse, die mir zu einer gegebenen Periode (Woche, Monat, Quartal, Jahr etc.) den Anfangs- und Endzeitpunkt berechnet. Bei der KW wäre das z.B. Montag 00:00 bis Sonntag 23:59:59. Dann verwende ich im
Query einfach ein 'BETWEEN' und dann klappts auch mit dem Index:
Select * from Daten Where TheDateTime Between :DateFrom and :DateTo
Für das Datumsformat verwende ich das universelle
ODBC-Datumsformat, das -obwohl kaum dokumentiert- auch vom
SQL-Server unterstützt wird:
Select * from Daten Where TheDateTime Between { ts '2005-12-24 03:50:00' } and { ts '2005-12-31-2005 18:43:20' }
Das Gute an diesem etwas merkwürdigen Format ist, das es überall funktioniert.
Ich bin mir heute nicht mir sicher, aber ich glaube, das die deutsche KW-Berechnung von der amerikanischen abweicht.