SET @date = '20041226' => KW 52 SET @date = '20041231' => KW 52 SET @date = '20050101' => KW 52 SET @date = '20050103' => KW 01
es gibt zwar nun keine KW53 mehr (die es eh nicht richtig gibt), aber die KW01 stimmt wieder ... ich denke, mit dieser L�sung kann ich und mein Kunde leben ... oder ich schau mal, was sich mit der KW 53 anstellen l�sst ;) Gru� Dominik ** -----Urspr�ngliche Nachricht----- ** Von: Claudius Ceteras [mailto:[EMAIL PROTECTED] ** Gesendet: Mittwoch, 11. Februar 2004 09:42 ** An: [EMAIL PROTECTED] ** Betreff: RE: [Database.asp] SQL KW 01/2005 <> RL KW01/2005 ** ** ** 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 ** ** ** _______________________________________________ Database.asp mailing list [EMAIL PROTECTED] http://www.glengamoi.com/mailman/listinfo/database.asp
