jag blir galen!!! Hej! Jepp det gör det. Men om man kollar i den svenska kalendern så ligger denna datum på vecka 1, d.v.s det finns ingen vecka 53 enl. den svenska kalendern Det kan bero på en bugg i Microsofts sätt att beräkna svenska veckor vilket bar gäller för vissa datum. T.Ex. 2003-12-30SQL-server 2000, veckoproblem med datumfunktioner
Snälla är det någon som kan hjälpa mig.
Med hjälp av en UDF som returnerar en tabell innehållande ett antal columner, bl.a. datum, år och vecka. Jag använder mig av functionen DATEADD() för att åstakomma detta, skickar med ett datum som argument till UDF:en, ittererar detta datum ett antal ggr. för att så småningom returnera detta.
Problemet i samband med detta är just veckokolumnen, för att mäta fram vecka på givet datum använder jag mig av DATEPART(ww, @date) om datumen (@date) är t.ex. 2003-12-29, så returneras vecka 53??!! från servern. Vecka 53 fanns inte år 2003.
Finns det något direktiv för att sätta svensk veckokalender på SQL-servern.
Jag kan inget hitta
kör detta så ser ni vad jag menar:
<code>
DECLARE @countedDays int, @d char
set @countedDays = 0
while @countedDays <= 20
begin
select convert(char(8), DATEADD( dd , @countedDays, '20031227') ,112) as fullDate,
DATEPART(yy, convert(char(8), DATEADD( dd , @countedDays, '20031227') ,112)) as year,
right('00' +rtrim(convert(char(2),DATEPART(ww, convert(char(8), DATEADD( dd , @countedDays, '20031227') ,112)))), 2) as [week]
set @countedDays = @countedDays + 1
end
go
</code>
Snälla om någon har erfarenhet av detta svara då på detta inlägg!
Tack!
Kjell BrandesSv: SQL-server 2000, veckoproblem med datumfunktioner
Vad vill du ha för veckonummer på 2003-12-29 då? Vecka 1? Blir ju mysko det med...Sv: SQL-server 2000, veckoproblem med datumfunktioner
KSv: SQL-server 2000, veckoproblem med datumfunktioner
Om man tar följande VB kod:
<code>
Dim varDate As Date
For varDate = #12/21/2003# To #1/5/2004#
Debug.Print varDate, Format(varDate, "dddd"), DatePart("ww", varDate, vbMonday, vbFirstFourDays)
Next
</code>
2003-12-22 måndag 52
2003-12-23 tisdag 52
2003-12-24 onsdag 52
2003-12-25 torsdag 52
2003-12-26 fredag 52
2003-12-27 lördag 52
2003-12-28 söndag 52
2003-12-29 måndag 53
2003-12-30 tisdag 1
2003-12-31 onsdag 1
2004-01-01 torsdag 1
2004-01-02 fredag 1
2004-01-03 lördag 1
2004-01-04 söndag 1
2004-01-05 måndag 2
Vilket kommer retuera fel veckonummer för 2003-12-29 oavsett klockslag.