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

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.


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?


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

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



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.


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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.