Avatar billede Slettet bruger
13. april 2010 - 14:51 Der er 8 kommentarer og
1 løsning

SQL date FORMAT og ORDER BY clauses i modgang

Hej alle.

Jeg har et problem med at få sorteret en liste med event rigtigt.
Jeg bruger et select statement der ser således ud:

SELECT id, time, place, description, day, DATE_FORMAT(date, '%d-%m%-%Y') AS date FROM da_calender WHERE date>=CURDATE() ORDER BY Date('%y-%m%-%d')

Min ORDER BY er et gæt der tilsyneladende ikke virker. Problemet er at jeg gerne vil have at datoen står dd-mm-yyyy, men når jeg laver dette om, sorterer den det efter dd og ikke efter hele datoen. Det vil sige 07-11-2020 kommer før 09-12-2011. Den forholder sig altså ikke til årstallet før den forholder sig til dagen.

Er det muligt at vise datoen i dd-mm-yyyy men sorterer efter yyyy-mm-dd?

Tusind tak

/MALTHE
Avatar billede arne_v Ekspert
13. april 2010 - 15:10 #1
SELECT id, time, place, description, day, DATE_FORMAT(date, '%d-%m%-%Y') AS date FROM da_calender WHERE date>=CURDATE() ORDER BY DATE_FORMAT(date, '%Y-%m%-%d')
Avatar billede arne_v Ekspert
13. april 2010 - 15:11 #2
Der skal nok goeres noget for at bruge DATE som jeg mener er et reeserveret ord i MySQL.
Avatar billede Slettet bruger
13. april 2010 - 15:36 #3
Jeg får scriptfejl når jeg gør som du foreslår : "Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /domains/www.mcisland.dk/www/da/kalender.php  on line 360"
- Det er den pågældende linje.
Avatar billede dkfire Nybegynder
13. april 2010 - 15:37 #4
Kunne det tænkes at dine date kolonne er en varchar ??

Du kan altid sortere datoen efter den type som den allerede ligger i din tabel. Der er ingen grund til at lave om på den når du sortere den.
Avatar billede dkfire Nybegynder
13. april 2010 - 15:39 #5
For at finde fejl i din sql sætning bliver du nød til at vise noget kode, samt at sætte "or die(mysql_error());" efter dit kald til mysql_query().

... mysql_query(...) or die(mysql_error());
Avatar billede Slettet bruger
13. april 2010 - 15:43 #6
Min fejl - det løste sig.. BONUS SPØGSMÅL (du får self point - lav svar): Hvis jeg bruger følgene "TIME_FORMAT(time, '%h:%i') AS time" hvorfor laver den det så om til engelsk tid... altså 01:30 i stedet for 13:30 ? - og hvordan undgår man det.
Avatar billede arne_v Ekspert
13. april 2010 - 16:17 #7
skifte fra %h til %H
Avatar billede Slettet bruger
13. april 2010 - 16:47 #8
Tusind tak - latterligt jeg ikke kunne finde det selv!

jeg kan ikke give dig point?
Avatar billede arne_v Ekspert
13. april 2010 - 17:00 #9
svar
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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