19. juni 2002 - 16:01Der er
7 kommentarer og 2 løsninger
Sortering efter dato
Jeg har et udtræk fra en database, hvor jeg ønsker at sortere efter et felt indeholdende en dato, på dette format : "dd-mm-yyyy". Feltet har datatypen varchar.
Hvordan får jeg sorteret dette udtræk efter dato? Bruger jeg "ORDRER BY", vil f.eks. 12-12-2000 kommer efter 10-06-2002, selvom sidstnævnte er en nyere dato.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Jo, men det er jo nettop dette som ikke er går. I og med at datatypen for feltet er VARCHAR, bliver der sorteret efter 1. tegn, derefter efter 2. tegn osv. Der bliver ikke taget hensyn til hele strengen ved sortering.
Derfor vil f.eks. datoerne 12-06-2002, 23-05-2002, 27-06-2001 blive sorteret såden :
Først og fremmest har du netop lært betydningen af det gamle ordsprog "Man kan ikke både blæse og ha' mel i munden". Du kan ikke forvente at kunne lave korrekte sorteringer på dato, når du har implementeret feltet som et varchar felt.
Hvilken database anvender du ? Man kan måske lave en work-around med CAST/CONVERT. En anden work-around er, at "vende" dit felt, så formatet er YYYY-MM-DD, eks. 2002-06-12, dette vil give dig en korrekt sortering.
Men du burde ændre feltet til et ægte date/time felt.
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.