Format de date MySQL JJ / MM / AAAA sélectionner la requête?

141

Je ne sais pas trop comment commander par format de date.

Pour le format, YYYY-MM-DDvous feriez ceci:...ORDER BY date DESC...

Comment passeriez-vous votre commande DD/MM/YYYY?

Cela ne fonctionne pas:

SELECT * FROM $table ORDER BY DATE_FORMAT(Date, '%Y%m%d') DESC LIMIT 14
K - La toxicité du SO augmente.
la source

Réponses:

153

Vous pouvez utiliser STR_TO_DATE()pour convertir vos chaînes en valeurs de date MySQL et ORDER BYle résultat:

ORDER BY STR_TO_DATE(datestring, '%d/%m/%Y')

Cependant, il serait judicieux de convertir la colonne en DATEtype de données au lieu d'utiliser des chaînes.

Eggyal
la source
189

Vous pensez que vous souhaitez simplement formater la date de sortie? alors c'est ce que tu cherches

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?

trappeur
la source
1
Je voudrais les 14 derniers enregistrements / dates :) Le format dans la base de données est "JJ / MM / AAAA" cependant!
K - La toxicité du SO augmente.
La date dans la base de données est-elle un type de date réel ou s'agit-il d'un type chaîne?
trappeur
2
mysql> DESCRIBE Table;et collez la sortie
trappeur
DATE_FORMAT (date, '% a') donnera une abréviation du jour de la semaine. J'ai utilisé ceci pour créer des boxplots et autres dans RStudio.
user208145
39
SELECT DATE_FORMAT(somedate, "%d/%m/%Y") AS formatted_date
..........
ORDER BY formatted_date DESC
John Conde
la source
3
Est-ce juste moi, ou ça %lne marche pas? Ça donne 12pour chaque mois et j'ai dû changer pour %m.
beroe
1
% l est pendant des heures dev.mysql.com/doc/refman/5.5/en/… @beroe
10
SELECT DATE_FORMAT(COLUMN_NAME, "%d/%m/%Y %h:%i %p");

OU

SELECT DATE_FORMAT("2019-05-10 19:30:10", "%d/%m/%Y %h:%i %p");

SORTIE: 05/10/2019 19h30

Mani
la source
4

pour mon cas, cela a fonctionné

str_to_date(date, '%e/%m/%Y' )
Kishore Sahoo
la source
4

Si l'heure est importante, j'ai utilisé str_to_date(date, '%d/%m/%Y %T' ), le %Tmontre l'heure au format hh:mm:ss.

Davi RIbeiro
la source
Ce n'est pas appelé heure. %Taffiche la valeur avec le format de l'heure. Au fait, vous avez mon vote favorable.
Wolverine
3

ORDER BY un type de date ne dépend pas du format de date, le format de date sert uniquement à afficher, dans la base de données, ce sont les mêmes données.

xdazz
la source
Le format peut être utilisé pour trier (si quelqu'un le veut vraiment, cela me semble étrange), mais un tel tri ne peut pas être basé sur un index, donc [b] est coûteux [/ b], Seul le tri sur des colonnes bien conçues peut être exécuté avec index ( fast) et optimisé par le serveur
Jacek Cz