Forums Neueste Beiträge
 

Kalenderwoche ermitteln wo der erste Tag Montag und die Woche vollständig sein muss ?

22/01/2009 - 12:05 von Volkan Senguel | Report spam
Hallo zusammen ich habe für unseren SQL 2005 ein paar Beispiele gefunden
welches die ISO Kalenderwoche ermittelt was auch soweit funktioniert.

Nun haben wir hier noch eine alte (schon angestaubte) Access DB wo wir die
Reports nun ins Reporting Service migrieren was auch eigentlich kein Problem
ist.
Nur ist in Access bei den Abfragen diese Methode benutzt worden
"=DatTeil("ww";[DATUMS_FELD];2;3)" womit definiert wird dass die Woche mit
Montag startet und die 1. KW vollstàndig sein muss.

Die function in SQL habe ich dazu diese hier gefunden:

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' )
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) )
EXEC @ISOWeek = ISOWeek @DATE2
SET @ISOWeek = @ISOWeek + 1
END
IF ( ( DATEPART( mm, @DATE ) = 12 ) AND
( ( DATEPART( dd, @DATE ) - DATEPART( dw, @DATE) ) >= 28 ) )
SET @ISOweek=1
RETURN(@ISOweek)
END

Nur werden nicht die gleichen KWs ausgegeben wie in Access.

Wie kriege ich das hin, gibt es hier ein Beispiel dazu?

Danke im Voraus für eine Tip
Volkan Senguel
 

Lesen sie die antworten

#1 Christa Kurschat
22/01/2009 - 13:10 | Warnen spam
Hallo Volkan,

"Volkan Senguel" schrieb im Newsbeitrag
news:
Hallo zusammen ich habe für unseren SQL 2005 ein paar Beispiele gefunden
welches die ISO Kalenderwoche ermittelt was auch soweit funktioniert.

Nun haben wir hier noch eine alte (schon angestaubte) Access DB wo wir die
Reports nun ins Reporting Service migrieren was auch eigentlich kein
Problem ist.
Nur ist in Access bei den Abfragen diese Methode benutzt worden
"=DatTeil("ww";[DATUMS_FELD];2;3)" womit definiert wird dass die Woche mit
Montag startet und die 1. KW vollstàndig sein muss.

Die function in SQL habe ich dazu diese hier gefunden:



Das ist auch genau die richtige.
...

Nur werden nicht die gleichen KWs ausgegeben wie in Access.

Wie kriege ich das hin, gibt es hier ein Beispiel dazu?



Führe mal ein select @@datefirst auf dem Server aus und dann schau mal in
der Hilfe nach set Datefirst.

Vermutlich hast Du da eine andere Einstellung

Gruß
Christa
Access-FAQ: http://www.donkarl.com
SQL-Server-FAQ: www.sqlfaq.de
InsideSql: www.insidesql.org

Ähnliche fragen