mySQL ORDER BY & DATE_FORMAT...

Tags:    mysql

Hey!

Jeg har en liste med tidsreservationer, jeg skal have ud i en bestemt rækkefølge - og det fungerer fint med følgende:

$result = mysql_query("SELECT * from drift_reservationer ORDER BY `dato` DESC, `tidspunkt` ASC");

dato er er DATE felt, og tidspunkt er et TIME felt.

Mit problem er nu, at dato kommer ud som YYYY-MM-DD, hvor jeg gerne vil have DD-MM-YYYY.
Så jeg prøvede følgende:

$result = mysql_query("SELECT * from drift_reservationer ORDER BY DATE_FORMAT(dato, '%d-%m-%Y') AS `dato` DESC, `tidspunkt` ASC");

... og da det ikke virkede har jeg Googlet og Googlet, men jeg finder ikke løsningen.

Er der nogen der kan svare mig på, hvordan jeg får spyttet datoen ud som DD-MM-YYYY, samtidig med at der sorteres med dato DESC og tidspunkt ASC?



7 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 9 karma
Sorter efter stemmer Sorter efter dato
Du skal flytte dit dato_format til der hvor du vælger hvilken data du vil trække ud.

Se nedenfor

Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 01.05.2012 11:21 af Bruger #10216
Ah... så du vil have en anden navngivning, så må du ændre:

DATE_FORMAT(dato, '%d-%m-%Y') AS dato

til

DATE_FORMAT(dato, '%d-%m-%Y') AS min_dato

:)


Eller du kan bruge

ORDER BY drift_reservationer.dato



Indlæg senest redigeret d. 01.05.2012 13:47 af Bruger #10216
Hej Michael,

Takker... Nu spytter den datoen rigtigt ud - nu er problemet bare at den ikke sorterer efter dato, men blot viser efter id.



Der står at MySQL skal sortere udtrækket efter feltet dato, det er hvad databasen så gør. Der bliver ikke sorteret efter et andet felt, ud over det du skriver ekstra.

Men hvis dit felt "dato" ikke er af type date, datetime, timestamp, eller unix-timestamp(int10), så vil databasen ikke sortere din data korrekt. F.eks. hvis du indsætter din dato i et tekstfelt, da vil sorteringen være alfabetisk og ikke kronologisk dato.



Indlæg senest redigeret d. 01.05.2012 13:07 af Bruger #10216
Hej igen,

Med denne linie:

$result = mysql_query("SELECT * from drift_reservationer ORDER BY `dato` DESC, `tidspunkt` ASC");

... sorterer den korrekt. Så snart jeg smider formatering på datoen, så ryger sorteringen.

Har prøvet disse tre:

$result = mysql_query("SELECT *, DATE_FORMAT(dato, '%d-%m-%Y') AS dato from drift_reservationer ORDER BY dato DESC, `tidspunkt` ASC");

$result = mysql_query("SELECT *, DATE_FORMAT(`dato`, '%d/%m-%Y') AS `dato` from drift_reservationer ORDER BY `dato` DESC, `tidspunkt` ASC");

$result = mysql_query("SELECT *, DATE_FORMAT(dato, '%d/%m-%Y') AS `dato` from drift_reservationer ORDER BY `dato` DESC, `tidspunkt` ASC");

Feltet dato er et DATE felt og feltet tidspunkt er et TIME.



Excelent ...

Til de nysgerrige eller hvem måtte finde denne tråd i fremtiden, ser linien nu sådan ud:

Fold kodeboks ind/udPHP kode 


... Nyt spørgsmål. Jeg skal have TIME_FORMAT %H:%i ind i samme linie.

Men hvordan ville det se ud?

UPDATE:

Har nu prøvet følgende:

Fold kodeboks ind/udPHP kode 


... Nu bliver det hele vist korrekt. Men det må da kunne gøres smartere? :)



Indlæg senest redigeret d. 01.05.2012 22:11 af Bruger #17194
Hvad med det her?

Fold kodeboks ind/udPHP kode 




Indlæg senest redigeret d. 02.05.2012 10:52 af Bruger #16025
t