Avatar billede agerled Nybegynder
05. maj 2004 - 09:36 Der er 10 kommentarer og
1 løsning

gruppere og sortere datoer fra DB

Hej.

Jeg har en række datoer i min db fra mange forskellige måneder.

Datatypen på felterne med datoer er varchar.

Hvordan får jeg´lavet min forespørgsel så den udskriver dem i grupper for hver måned og højeste dato øverst i hver gruppe..??
Avatar billede fennec Nybegynder
05. maj 2004 - 09:40 #1
det fedeste ville være at lave formatet om til datetime. Så er der nemlig ingen ben i det. Men det kan også godt lade sig gøre alligevel. Hvilket "datoformat" kører du med?? yyyy-mm-dd, dd-mm-yyyy eller .....
Avatar billede agerled Nybegynder
05. maj 2004 - 09:43 #2
jeg kan ikke bruge datetime da det er en oracle DB.

formatet er : dd-mm-yyyy
Avatar billede fennec Nybegynder
05. maj 2004 - 09:56 #3
Nu har jeg ikke brugt Oracle, men den har vel en dato type....

Men denne burde sortere i faldende orden....
"select * from xxxx order by right(dato,4) desc, mid(dato,3,2) desc, left(dato,2) desc"

Hvis du vil have en måned:
"select * from xxxx where right(dato,4)='2004' and mid(dato,3,2)='05' order by left(dato,2) desc"

Jeg kan ikke huske om tekst begynder på index 0 eller 1, hvis det ikke virker så prøv med mid(dato,4,2).
Avatar billede agerled Nybegynder
05. maj 2004 - 10:00 #4
jeg prøvede dit første eksempel men nu får jeg en fejl om ugyldigt kolonnenavn..??
Avatar billede fennec Nybegynder
05. maj 2004 - 10:03 #5
har du ændret "dato" til dit kolonnenavn????
Avatar billede agerled Nybegynder
05. maj 2004 - 10:06 #6
ja. kolonnenavnet med datoen er "dato"..
Avatar billede fennec Nybegynder
05. maj 2004 - 10:18 #7
Det kan jeg ikke forstå. Oracle burde da understøtte left, right, mid. Men det kan da testes. Prøv at udskrive disse:

"select left(dato,2) as MyLeft from xxxx"
Avatar billede agerled Nybegynder
05. maj 2004 - 11:10 #8
har fundet frem til dette:

order by substr(DATO,1,2) DESC, substr(DATO,4,2) DESC, substr(DATO,7,10) DESC

den er næsten rigtig. det eneste den ikke sortere rigtig substr(DATO,4,2) altså månedsnummeret. Den skriver hele tiden det laveste nummer først..?
Avatar billede agerled Nybegynder
05. maj 2004 - 11:13 #9
Nu fik jeg den til at virke:

order by substr(DATO,4,2) DESC, substr(DATO,1,2) DESC, substr(DATO,7,10) DESC

byttede bare lidt rund på dem.

fennec læg lige et svar igen.
Avatar billede fennec Nybegynder
05. maj 2004 - 11:18 #10
du skal have flyttet lidt mere rundt. Sorteringen skal være år, måned, dag.

order by substr(DATO,7,10) DESC, substr(DATO,4,2) DESC, substr(DATO,1,2) DESC
Avatar billede agerled Nybegynder
05. maj 2004 - 11:27 #11
takker..
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
Kurser inden for grundlæggende programmering

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