Kan iemand mij helpen?
Als ik een query doe met php en ik wil sorteren op datum
sql="blabla ORDER BY DATE DESC";
dan gaat het niet helemaal goed met de volgorde. Ik krijg dan als output bijv.
29/11/2016
29/10/2016
26/11/2016
3/12/2016

ipv
3/12/2016
29/11/2016
26/11/2016
29/10/2016

Hoe los ik dit op?
Wat je hier laat zien is een tekst en geen datum. Sla je datums op als DATE en gebruik DATE_FORMAT voor de formatting.
De data zijn opgeslagen als DATE en ik gebruik DATE_FORMAT voor de output.

$rec = "SELECT Nummer, Naam, Kleur, Geslacht, Leeftijd, Vacht, Ras, Status, DATE_FORMAT(Datum,'%d/%m/%y') AS Datum, DATE_FORMAT(Vertrekdatum,'%d/%m/%y') AS Vertrekdatum FROM `katten` WHERE Status = '$Status' ORDER BY DATE_FORMAT(Vertrekdatum,'%d/%m/%y') DESC LIMIT $start, $perpage";
Je hoeft geen DATE_FORMAT in je ORDER clausule te gebruiken.
Waarom sorteer je dan op een geformatteerde datum?
@Ben
Dat was een probeersel.

@Arien
Als ik alleen op ORDER BY Vertrekdatum doe, gaat t ook niet goed. Hij telt af op de dag zonder naar de maand te kijken.


Aha, ik vat t, dank!
Gebruik eens in je AS een andere veldnaam. Zou kunnen helpen.
Als ik de format_date weglaat in de query gaat t goed, maar ik krijg er een ander probleem voor terug.
Het lukt me niet om

echo "<td>".$row["Vertrekdatum"]."</td>";
te date_formatten.

echo "<td>".DATE_FORMAT($row["Vertrekdatum"],'%d/%m/%y')."</td>"; 

Warning: date_format() expects parameter 1 to be DateTimeInterface
DATE_FORMAT() gebruik je ook hoofdzakelijk in MySQL om je datum te formatteren. Dus ik zou niet weten wat er fout gaat, behalve dat je bij je AS dezelfde veldnaam gebruikt i.p.v. een andere. En verder is het dan ook een MySQL functie.

Er bestaat ook een gelijknamige PHP-functie, maar die werkt weer net wat anders. Maar praktisch gezien zou je met MySQL prima uit de voeten kunnen.
stel in je query haal je op '2016-12-31'
Die zit dan in $row['datum'] in onderstaand voorbeeld


<td><?php echo (new DateTime($row['datum']))->format('d/m/Y'); ?></td>



of welk formaat je ook maar in html wilt hebben.
Zelf haal ik tegenwoordig graag de datums ongeformateerd op uit de database. Pas hij het weergeven in het echo-statement (of in de aan te maken pdf /xls) bepaal ik het formaat.
Dat maakt dat ik niet voor elk wissewasje in de query's moet gaan zoeken en de query ook kan herbruiken voor verschillende situaties (verschillende talen gebruiker, anders in html en in de mail/pdf etc)

Reageren