MySQL-Datumsformat TT / MM / JJJJ Abfrage auswählen?

139

Ich bin etwas verwirrt darüber, wie ich nach Datumsformaten bestellen soll.

Für das Format YYYY-MM-DDwürden Sie dies tun:...ORDER BY date DESC...

Wie würden Sie bestellen DD/MM/YYYY?

Das funktioniert nicht:

SELECT * FROM $table ORDER BY DATE_FORMAT(Date, '%Y%m%d') DESC LIMIT 14
K - Die Toxizität in SO nimmt zu.
quelle

Antworten:

152

Sie können STR_TO_DATE()Ihre Zeichenfolgen in MySQL-Datumswerte und ORDER BYdas Ergebnis konvertieren :

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

Es ist jedoch ratsam, die Spalte in den DATEDatentyp zu konvertieren, anstatt Zeichenfolgen zu verwenden.

eggyal
quelle
188

Vermutlich möchten Sie nur das Ausgabedatum formatieren? dann ist es das, wonach du suchst

SELECT *, DATE_FORMAT(date,'%d/%m/%Y') AS niceDate 
FROM table 
ORDER BY date DESC 
LIMIT 0,14

Oder möchten Sie tatsächlich nach Tag vor Monat vor Jahr sortieren?

Fallensteller
quelle
1
Ich möchte die 14 neuesten Daten / Datensätze :) Das Format in der Datenbank ist jedoch "TT / MM / JJJJ"!
K - Die Toxizität in SO nimmt zu.
Ist das Datum in der Datenbank ein tatsächlicher Datumstyp oder ein Zeichenfolgentyp?
Trapper
2
mysql> DESCRIBE Table;und fügen Sie die Ausgabe
Trapper
DATE_FORMAT (Datum, '% a') gibt eine Abkürzung für den Wochentag an. Ich habe dies verwendet, um einige Boxplots und dergleichen in RStudio zu erstellen.
user208145
39
SELECT DATE_FORMAT(somedate, "%d/%m/%Y") AS formatted_date
..........
ORDER BY formatted_date DESC
John Conde
quelle
3
Ist es nur ich oder funktioniert das %lnicht? Es gibt 12für jeden Monat und ich musste wechseln %m.
Beroe
1
% l ist für Stunden dev.mysql.com/doc/refman/5.5/en/… @beroe
10
SELECT DATE_FORMAT(COLUMN_NAME, "%d/%m/%Y %h:%i %p");

ODER

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

AUSGABE ist 10/05/2019 07:30 PM

Mani
quelle
4

für meinen Fall hat das funktioniert

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

Wenn die Stunde wichtig ist, die ich verwendet habe str_to_date(date, '%d/%m/%Y %T' ), %Tzeigt die Stunde im Format an hh:mm:ss.

Davi RIbeiro
quelle
Es wird nicht als Stunde bezeichnet. %Tzeigt den Wert mit Zeitformat. Du hast übrigens meine Gegenstimme bekommen.
Wolverine
3

Die BESTELLUNG NACH einem Datumstyp hängt nicht vom Datumsformat ab. Das Datumsformat dient nur dazu, in der Datenbank dieselben Daten anzuzeigen.

xdazz
quelle
Das Format kann zum Sortieren verwendet werden (wenn jemand es wirklich will, scheint mir seltsam), aber eine solche Sortierung kann nicht auf dem Index basieren, daher ist [b] kostspielig [/ b]. Nur das Sortieren über gut gestaltete Spalten kann mit dem Index ausgeführt werden ( schnell) und vom Server optimiert
Jacek Cz