Hab ich im web gefunden... Es gibt aber sicher noch andere k�rzere
Implementationen:
CREATE PROC dbo.ISOweek (
@DATE datetime
)
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 )
BEGIN
DECLARE @Date2 datetime
SET @DATE2 = CAST( DATEPART( yy, @DATE ) - 1 AS CHAR(4) ) +
'12' + CAST( 24 + DATEPART( DAY, @DATE ) AS CHAR(2) )
-- Nicht so doll: rekursiver Aufruf
EXEC @ISOWeek = ISOWeek @DATE2
SET @ISOWeek = @ISOWeek + 1
END
--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
Und der Test
DECLARE @week int
DECLARE @date datetime
SET @date = '20000101'
EXEC @Week = ISOWeek @date
-- Noch die 52. Woche
SELECT @Week
SET @date = '20000103'
EXEC @Week = ISOWeek @date
-- die 1.
SELECT @Week
Claudius
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] On Behalf Of
> Kovacic-Vo�, Dominik-Pascal
> Sent: Dienstag, 10. Februar 2004 10:55
> To: '[EMAIL PROTECTED]'
> Subject: AW: [Database.asp] SQL KW 01/2005 <> RL KW01/2005
>
> tja, das hilft aber nicht wirklich weiter und scheinbar ist
> es nur ein Thema f�r uns beide
>
> w�rde ja gerne cross posten, um zu schauen, was andere dazu
> sagen ... aber dann bekomme ich bestimmt einen auf den Deckel ;)
>
> ** -----Urspr�ngliche Nachricht-----
> ** Von: Alexander Schmid [mailto:[EMAIL PROTECTED]
> ** Gesendet: Freitag, 6. Februar 2004 13:23
> ** An: [EMAIL PROTECTED]
> ** Betreff: Re: [Database.asp] SQL KW 01/2005 <> RL KW01/2005
> **
> **
> ** also das steht in der hilfe.... :-/
> **
> ** Die Datumseinheit week (wk, ww) spiegelt an SET DATEFIRST
> ** vorgenommene �nderungen wider. Der 1. Januar eines
> ** beliebigen Jahres definiert die Anfangszahl f�r die
> ** Datumseinheit week. Beispiel: DATEPART(wk, 'Jan 1, xxxx') =
> ** 1, wobei xxxx f�r ein beliebiges Jahr steht.
> **
> ** weil der 1.1.05 aber ein samstag ist, wird automatich nach
> ** dem we mit einer neuen woche begonnen...
> ** tolle logik!!!
> **
> ** [EMAIL PROTECTED] schrieb am 06.02.04 13:13:55:
> **
> ** Nachtrag:
> **
> ** select DATEPART(wk,'2004-12-31 00:00:00') = 53
> ** select DATEPART(wk,'2005-01-01 00:00:00') = 1
> ** select DATEPART(wk,'2005-01-03 00:00:00') = 2
> **
> ** also waren meine Ausf�hrungen nicht ganz richtig, aber
> ** dennoch stellt sich
> ** hier das Problem nach wie vor.
> **
> ** Gru�
> ** Dominik
> **
> ** ** -----Urspr�ngliche Nachricht-----
> ** ** Von: "Kovacic-Vo�, Dominik-Pascal"
> [mailto:[EMAIL PROTECTED]
> ** ** Gesendet: Freitag, 6. Februar 2004 12:54
> ** ** An: '[EMAIL PROTECTED]'
> ** ** Betreff: [Database.asp] SQL KW 01/2005 <> RL KW01/2005
> ** **
> ** **
> ** ** Hallo
> ** **
> ** ** ich stehe hier gerade vor einem kleinen Problem.
> ** **
> ** ** Wem ist schon alles aufgefallen, dass die KW01 im Jahr 2005
> ** ** zwischen dem SQL
> ** ** Server und dem realem Leben abweicht?
> ** **
> ** ** Im realem Leben ist KW01/2005 vom 03. Januar 2005 bis 09.
> ** ** Januar 2005.
> ** ** F�r den SQL Server aber vom 27.12.2004 bis zum 02. Januar
> ** ** 2005 und damit ist
> ** ** KW02/2005 im SQL Server = KW01/2005 im real Live.
> ** **
> ** ** Was issn das f�r ein Dummfug ???
> ** ** Theorie: Das Jahr 2004 hat 53 Kalenderwochen (vermutlich
> ** ** durch Schaltjahr
> ** ** und noch wegen so ein paar Kleinigkeiten). Intern rechnet
> ** ** der SQL Server
> ** ** aber nur mit 52 Kalenderwochen.
> ** **
> ** ** Meinem Kunden gef�llt das gar nicht. Solange mir jetzt bitte
> ** ** keiner sagt,
> ** ** dass ich im Jahre 2005 alle Anzeigen f�r Kalenderwochen -1
> ** ** machen muss, bin
> ** ** ich f�r alle Vorschl�ge dankbar ;)
> ** **
> ** ** Gru�
> ** ** Dominik
> ** ** _______________________________________________
> ** ** Database.asp mailing list
> ** ** [EMAIL PROTECTED]
> ** ** http://www.glengamoi.com/mailman/listinfo/database.asp
> ** **
> ** **
> ** **
> ** _______________________________________________
> ** Database.asp mailing list
> ** [EMAIL PROTECTED]
> ** http://www.glengamoi.com/mailman/listinfo/database.asp
> **
> ** --
> **
> **
> ** _______________________________________________
> ** Database.asp mailing list
> ** [EMAIL PROTECTED]
> ** http://www.glengamoi.com/mailman/listinfo/database.asp
> **
> **
> **
> _______________________________________________
> Database.asp mailing list
> [EMAIL PROTECTED]
> http://www.glengamoi.com/mailman/listinfo/database.asp
>
_______________________________________________
Database.asp mailing list
[EMAIL PROTECTED]
http://www.glengamoi.com/mailman/listinfo/database.asp