Avatar billede giebel Nybegynder
02. juni 2006 - 12:47 Der er 6 kommentarer

Order by date

Jeg skal have min query til at order by date... problemet er at det felt hvor datoen står, er et normalt textfelt(i db) og derfor tager den kun hensyn til de første 2 tal når dato feks ser sådan her ud: 01.07-2006 11:00

Dvs at 02.06-2006 11:00 vil blive opfattet som højere end 01.07-2006 11:00

Hvordan kan jeg i min query gøre den klar over at d 01.07-2006 er højere (nyere) end d. 02.05-2006? den skal order by redtid, hvilket er en tidangivning for hvornår profilen senest er blevet opdateret, og så skal den vise en falndende list over alle profiler, med den senest opdaterede først.

mysql_query("select id, name, displayno, land, genre from bandpages where accept='2' order by redtid??? desc");
Avatar billede ladyhawke Novice
02. juni 2006 - 12:59 #1
ved at ændrer feltet til at være en dato?

et tekstfelt bliver naturligt nok... Sorteret som en tekst
Avatar billede giebel Nybegynder
02. juni 2006 - 13:10 #2
kan jeg bare sådan uden videre ændre den til en dato, uden at miste indholdet som allerede er der?
Avatar billede fennec Nybegynder
02. juni 2006 - 13:16 #3
Nej, du bliver nød til at lave en kørsel som smider datoen over i en ny kolonne af datetime typen. Du kan så bagefter slette den gamle række.
Avatar billede giebel Nybegynder
02. juni 2006 - 13:18 #4
er der virkeligt ingen måde så man i sin querry kan omskrive det, så jeg ikke behøver at rode videre med db?
Avatar billede fennec Nybegynder
02. juni 2006 - 13:25 #5
Du kan sikkert lave noget cast() og mid(). Noget i denne stil:
cast(MID(oldDate,7,4)+"-"+ MID(oldDate,4,2)+"-"+ MID(oldDate,1,2) as date)

Det kan blive til:
select * from dinTabel order by cast(MID(oldDate,7,4)+"-"+ MID(oldDate,4,2)+"-"+ MID(oldDate,1,2) as date)
Avatar billede fennec Nybegynder
02. juni 2006 - 13:27 #6
Men jeg vil helt klart fortrække en update løsning, så den ikke skal konvertere hver gang der skal laves en kørsel:

update dinTabel set newDate = cast(MID(oldDate,7,4)+"-"+ MID(oldDate,4,2)+"-"+ MID(oldDate,1,2) as date)
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