Je suis un peu confus sur la façon de commander par formats de date.
Pour le format YYYY-MM-DD
vous feriez ceci: ...ORDER BY date DESC...
Comment voulez-vous commander par DD/MM/YYYY
?
Cela ne fonctionne pas:
SELECT * FROM $table ORDER BY DATE_FORMAT(Date, '%Y%m%d') DESC LIMIT 14
Vous pouvez utiliser STR_TO_DATE()
pour convertir vos chaînes en valeurs de date MySQL et ORDER BY
le résultat:
ORDER BY STR_TO_DATE(datestring, '%d/%m/%Y')
Toutefois, il serait judicieux de convertir la colonne en type de données DATE
au lieu d'utiliser des chaînes.
Vous avez probablement juste envie de formater la date de sortie? alors c'est ce que vous recherchez
SELECT *, DATE_FORMAT(date,'%d/%m/%Y') AS niceDate
FROM table
ORDER BY date DESC
LIMIT 0,14
Ou voulez-vous réellement trier par jour avant mois avant année?
SELECT DATE_FORMAT(somedate, "%d/%m/%Y") AS formatted_date
..........
ORDER BY formatted_date DESC
Utilisation:
SELECT DATE_FORMAT(NAME_COLUMN, "%d/%l/%Y") AS 'NAME'
SELECT DATE_FORMAT(NAME_COLUMN, "%d/%l/%Y %H:%i:%s") AS 'NAME'
Référence: https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html
Vous avez probablement juste envie de formater la date de sortie? alors c'est ce que vous recherchez
SELECT *, DATE_FORMAT(date,'%d/%m/%Y') AS niceDate
FROM table
ORDER BY date DESC
LIMIT 0,14
Ou voulez-vous réellement trier par jour avant mois avant année?
ORDER BY un type de date ne dépend pas du format de date, le format de date est uniquement destiné à montrer, dans la base de données, ce sont les mêmes données.
pour mon cas cela a fonctionné
str_to_date(date, '%e/%m/%Y' )
Si l'heure est importante, j'ai utilisé str_to_date(date, '%d/%m/%Y %T' )
, le %T
affiche l'heure au format hh:mm:ss
.