Czy wybrać format daty MySQL DD / MM / RRRR?

139

Jestem trochę zdezorientowany, jak porządkować według formatów daty.

W przypadku formatu YYYY-MM-DDmożesz to zrobić:...ORDER BY date DESC...

Jak zamawiałbyś DD/MM/YYYY?

To nie działa:

SELECT * FROM $table ORDER BY DATE_FORMAT(Date, '%Y%m%d') DESC LIMIT 14
K - Toksyczność SO rośnie.
źródło

Odpowiedzi:

152

Możesz użyć, STR_TO_DATE()aby przekonwertować swoje ciągi na wartości dat MySQL i ORDER BYwynik:

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

Jednak rozsądnie byłoby przekonwertować kolumnę na DATEtyp danych zamiast używać ciągów.

jajeczny
źródło
188

Zgadujesz, że prawdopodobnie chcesz po prostu sformatować datę wyjściową? to jest to, czego szukasz

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

A może chcesz posortować dane według dnia przed miesiącem przed rokiem?

traper
źródło
1
Chciałbym mieć 14 ostatnich dat / rekordów :) Format w bazie danych to „DD / MM / RRRR”!
K - Toksyczność SO rośnie.
Czy data w bazie danych to rzeczywisty typ daty, czy jest to łańcuch?
trapper
2
mysql> DESCRIBE Table;i wklej wynik
trapper
DATE_FORMAT (data, „% a”) podaje skrót dnia tygodnia. Użyłem tego do tworzenia wykresów pudełkowych i tym podobnych w RStudio.
user208145
39
SELECT DATE_FORMAT(somedate, "%d/%m/%Y") AS formatted_date
..........
ORDER BY formatted_date DESC
John Conde
źródło
3
Czy to tylko ja, czy %lnie działa? Daje 12co miesiąc i musiałem się przebrać %m.
beroe
1
% l to godziny dev.mysql.com/doc/refman/5.5/en/ ... @beroe
10
SELECT DATE_FORMAT(COLUMN_NAME, "%d/%m/%Y %h:%i %p");

LUB

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

WYJŚCIE to 10/05/2019 19:30

Mani
źródło
4

w moim przypadku to zadziałało

str_to_date(date, '%e/%m/%Y' )
Kishore Sahoo
źródło
4

Jeśli godzina jest ważna, użyłem str_to_date(date, '%d/%m/%Y %T' ), %Tpokazuje godzinę w formacie hh:mm:ss.

Davi RIbeiro
źródło
Nie jest to określane jako godzina. %Tpokazuje wartość w formacie czasu. Swoją drogą, dostałeś mój głos za.
Wolverine
3

Sortuj według typu daty nie zależy od formatu daty, format daty służy tylko do pokazania w bazie danych, że są to te same dane.

xdazz
źródło
Format może być użyty do sortowania (jeśli ktoś naprawdę chce, wydaje mi się dziwny), ale takie sortowanie nie może być oparte na indeksie, więc [b] jest kosztowne [/ b], Tylko sortowanie po dobrze zaprojektowanych kolumnach można wykonać za pomocą indeksu ( fast) i zoptymalizowany przez serwer
Jacek Cz