Avatar billede dennisbjorn Juniormester
15. oktober 2009 - 14:54 Der er 5 kommentarer og
1 løsning

Formatering af dato til uge

Hej,

I en MS-SQL db har jeg et felt "Dato", hvor data er gemt således yyyymmdd

I en select formateres dato til uge (yyyy-ww) således:

SELECT CAST(DATEPART(yyyy, Dato) as varchar(4)) + '-' + CAST(DATEPART(ww, Dato) as varchar(2)) AS Uge

Problemet er, at uge 1 til 9 returneres således 2009-1, 2009-2 osv.
Jeg ønsker at uge altid er 2 ciffer således 2009-01, 2009-02 så jeg kan sortere records efter uge.
Avatar billede arne_v Ekspert
15. oktober 2009 - 18:14 #1
Proev:

SELECT CAST(DATEPART(yyyy, Dato) as varchar(4)) + '-' + RIGHT('00' + CAST(DATEPART(ww, Dato) as varchar(2)),2) AS Uge
Avatar billede arne_v Ekspert
15. oktober 2009 - 18:14 #2
Jeg tror at det ville vaere nemmere at lave formateringen i applikationen end i SQL.
Avatar billede dennisbjorn Juniormester
15. oktober 2009 - 18:27 #3
Hej Arne,

Dit script virker perfekt :-)
Smid et svar.
Avatar billede arne_v Ekspert
15. oktober 2009 - 18:41 #4
svar
Avatar billede janus_007 Nybegynder
16. oktober 2009 - 23:18 #5
Om du sorterer efter uge eller datetime er da et fedt, du får den samme sortering :)

Det havde været en anden snak hvis du skulle gruppere eller selecte.
Avatar billede dennisbjorn Juniormester
18. oktober 2009 - 18:23 #6
Det er en Select sætningen på en asp side. SQL serveren er version 2000 og feltet "dato" er af typen varchar.

Løsningen fra Arne sikre, at uge altid er 2 ciffer og derved rigtig sortering.

Eks.:

Før (forkert med og uden group by)
2009-39
2009-4
2009-40

Efter (rigtig)
2009-04
2009-39
2009-40
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester