Формат даты MySQL ДД / ММ / ГГГГ выбрать запрос?

151

Я немного запутался в том, как заказывать по форматам даты.

Для формата YYYY-MM-DDвы должны сделать это:...ORDER BY date DESC...

Как бы вы сделали заказ DD/MM/YYYY?

Это не работает:

SELECT * FROM $table ORDER BY DATE_FORMAT(Date, '%Y%m%d') DESC LIMIT 14
базикарл
источник

Ответы:

160

Вы можете использовать STR_TO_DATE()для преобразования ваших строк в значения даты MySQL и ORDER BYрезультат:

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

Однако было бы разумно преобразовать столбец в DATEтип данных вместо использования строк.

яичный
источник
194

Думаете, вы просто хотите отформатировать дату вывода? тогда это то, что вам нужно

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

Или вы действительно хотите отсортировать по дням перед месяцем перед годом?

ловец
источник
1
Я бы хотел 14 последних дат / записей :) Формат в базе данных - «ДД / ММ / ГГГГ»!
basickarl
Является ли дата в базе данных фактическим типом даты или строковым типом?
траппер
2
mysql> DESCRIBE Table;и вставляем вывод
траппер
DATE_FORMAT (date, '% a') даст аббревиатуру дня недели. Я использовал это для создания коробочных диаграмм и тому подобного в RStudio.
user208145
41
SELECT DATE_FORMAT(somedate, "%d/%m/%Y") AS formatted_date
..........
ORDER BY formatted_date DESC
Джон Конде
источник
3
Это только у меня, или %lне работает? Дается 12на каждый месяц, и мне пришлось поменять на %m.
beroe
1
% l на часы dev.mysql.com/doc/refman/5.5/en/… @beroe
13
SELECT DATE_FORMAT(COLUMN_NAME, "%d/%m/%Y %h:%i %p");

ИЛИ

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

ВЫХОД: 05.10.2019 19:30.

Мани
источник
5

в моем случае это сработало

str_to_date(date, '%e/%m/%Y' )
Кишор Саху
источник
5

Если час важен, я использовал str_to_date(date, '%d/%m/%Y %T' ), то %Tпоказывает час в формате hh:mm:ss.

Дави Рибейро
источник
Это не называется часом. %Tпоказывает значение в формате времени. Кстати, ты получил мой голос.
Wolverine
4

ORDER BY тип даты не зависит от формата даты, формат даты предназначен только для отображения в базе данных, что это одни и те же данные.

xdazz
источник
Формат можно использовать для сортировки (если кто-то действительно хочет, это кажется мне странным), но такая сортировка не может быть основана на индексе, поэтому [b] стоит дорого [/ b]. Только сортировка по хорошо спроектированным столбцам может выполняться с индексом ( быстро) и оптимизирован сервером
Jacek Cz