Ongewenste sortering na gebruik van DATE_FORMAT
Via de onderstaande query wil ik gegevens gaan ophalen en weergegeven.
Code (php)
1
SELECT agendaid, agendaitem, agenda_soort_activiteit, agendaintro, datum_vanaf, datum_tot_en_met, tijd_vanaf, status, besloten_activiteit, aanmelding_vereist FROM tbl_agenda WHERE STATUS = '2' AND datum_vanaf >= CURDATE() ORDER BY datum_vanaf ASC
De velden "datum_vanaf " en "datum_tot_en_met" zijn DATE velden.
Daar komt de datum via een invoerpagina in als jaar-maand-dag --> 0000-00-00
Om de datum mooi weer te geven gebruik ik:
DATE_FORMAT(datum_vanaf, '%d-%m-%Y')
DATE_FORMAT(datum_tot_en_met, '%d-%m-%Y')
Nu komt het vreemde:
Als ik de DATE_FORMAT WEL gebruik is er GEEN sprake van sortering.
Alles gaat dan door elkaar.
Als ik de DATE_FORMAT NIET gebruik is er WEL sprake van sortering.
De datum is weergegeven zoals ik het wil, alleen toch nog door elkaar...
Heeft iemand een idee hoe dat kan?
Toevoeging op 06/10/2013 19:44:16:
Okay, ik heb een oplossing gevonden, misschien zou dit ook het antwoord geweest zijn?
Ik heb in de loop het volgende opgenomen:
$timestamp = strtotime($row['datum_vanaf']);
$newDate = date('d-m-Y', $timestamp);
Dus
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?
SELECT agendaid, agendaitem, agenda_soort_activiteit, agendaintro, datum_vanaf, datum_tot_en_met, tijd_vanaf, status, besloten_activiteit, aanmelding_vereist FROM tbl_agenda WHERE STATUS = '2' AND datum_vanaf >= CURDATE() ORDER BY datum_vanaf ASC
do {
$timestamp = strtotime($row['datum_vanaf']);
$newDate = date('d-m-Y', $timestamp);
} while.....
?>
SELECT agendaid, agendaitem, agenda_soort_activiteit, agendaintro, datum_vanaf, datum_tot_en_met, tijd_vanaf, status, besloten_activiteit, aanmelding_vereist FROM tbl_agenda WHERE STATUS = '2' AND datum_vanaf >= CURDATE() ORDER BY datum_vanaf ASC
do {
$timestamp = strtotime($row['datum_vanaf']);
$newDate = date('d-m-Y', $timestamp);
} while.....
?>
Resultaat:
- Datum is weergegeven in dd-mm-JJJJ
- Gesorteerd
Het is helemaal niet nodig om een kolom in de select te hebben staan waarop je sorteert, alleen wel even op letten dat de alias niet dezelfde naam heeft als de kolom.
In het kort: