webForumDet fria alternativet

problem med datum och veckor i sql

2 svar · 504 visningar · startad av neversleep

neversleepMedlem sedan okt. 2001230 inlägg
#1

jag har problem med veckonummer i min sql

kör ms sqlserver 2000

select DATEPART(ww,'2005-12-31') returnerar 53
select DATEPART(ww,'2006-01-02') returnerar 2

det borde väl returneras 52 respektive 1? vad är det för tok?

neversleepMedlem sedan okt. 2001230 inlägg
#2

hittade en lösning på pellesoft

http://www.pellesoft.se/communicate/tips/tips.aspx?tid=2028

CREATE FUNCTION [dbo].[GetISOWeekNumber]
( @Date datetime)
RETURNS int 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) 
    SET @ISOweek=dbo.GetISOWeekNumber(CAST(DATEPART(yy,@DATE)-1 AS CHAR(4))+'12'+ CAST(24+DATEPART(DAY,@DATE) AS CHAR(2)))+1

\--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

LarsGMedlem sedan dec. 200012 464 inlägg
#3

SQL server beräknar inte veckonummer enligt ISO-standard. Se funktionen ISOweek i

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_create_7r1l.asp

122 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
119 ms — hämta tråd, inlägg och bilagor (db)