[ASP] Kalenderwoche in SQL

Klee, Andreas activeserverpages at glengamoi.com
Tue, 7 Dec 2004 14:28:49 +0100


Danke ...
Macht es mehr Sinn eine benutzerdefinierte Funktion zu schreiben statt =
das ganze einer SP zu übergeben?
Was ist schneller?

Viele Grüße von der Küste
Andreas

-----Original Message-----
From: activeserverpages-admin@glengamoi.com =
[mailto:activeserverpages-admin@glengamoi.com] On Behalf Of =
"Kovacic-Voß, Dominik-Pascal"
Sent: Tuesday, December 07, 2004 1:10 PM
To: 'activeserverpages@glengamoi.com'
Subject: AW: [ASP] Kalenderwoche in SQL


Moin

Dies stammt im Original von Claudius und ich habe es gefunden in der =
alten Mailingliste database.asp (database.asp@glengamoi.com)

da hatten wir das Thema schon mal (von mir ausgelöst) unter dem Titel =
[Database.asp] SQL KW 01/2005 <> RL KW01/2005

Das Ergebnis war damals:

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 stimmte wieder ...

Gruß
Dominik

==================

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 

==================

-----Ursprüngliche Nachricht-----
Von: Hubert Daubmeier [mailto:hubertd@neusob.de]
Gesendet: Montag, 6. Dezember 2004 19:18
An: activeserverpages@glengamoi.com
Betreff: RE: [ASP] Kalenderwoche in SQL



Bei VBScript kann ich einstellen wie die Kalenderwoche berechnet wird. =
Beim SQL Server schweigen sich die Books online darüber aus. Vermute =
mal "jibt ed ned".  

-- 

Viele Grüße
Hubert Daubmeier 


-----Original Message-----
From: activeserverpages-admin@glengamoi.com
[mailto:activeserverpages-admin@glengamoi.com] On Behalf Of Klee, =
Andreas
Sent: Monday, December 06, 2004 5:07 PM
To: activeserverpages@glengamoi.com
Subject: [ASP] Kalenderwoche in SQL

Hallo,

Ich möchte mit einem SQL Statment die Kalenderwoche ermitteln. Mit  - =
DATEPART(wk, T1.datum) AS woche - kein Problem, dachte ich.

Am 3.1.2005 ist halt woche 1 und nicht woche 2.
Wie kann ich einstellen das die erste woche die ist mit 4 mindestens =
Tagen.

Viele Grüße von der Küste.
Andreas
_______________________________________________
ActiveServerPages Mailingliste, Postings senden an: =
ActiveServerPages@glengamoi.com An-/Abmeldung und Suchfunktion unter: =
http://www.glengamoi.com/mailman/listinfo/activeserverpages


_______________________________________________
ActiveServerPages Mailingliste, Postings senden an: =
ActiveServerPages@glengamoi.com An-/Abmeldung und Suchfunktion unter: =
http://www.glengamoi.com/mailman/listinfo/activeserverpages


_______________________________________________
ActiveServerPages Mailingliste, Postings senden an: =
ActiveServerPages@glengamoi.com An-/Abmeldung und Suchfunktion unter: =
http://www.glengamoi.com/mailman/listinfo/activeserverpages