#mysql #sql #date #sql-order-by
#mysql #sql #Дата #sql-order-by
Вопрос:
Я хочу отсортировать свою таблицу по порядку дат, чтобы недавно добавленные данные были вверху таблицы.
Я использовал запрос для сортировки как:
select date from register_table order by date desc.
В настоящее время таблица отображает данные как:
date
02.04.2019
05.04.2019
09.04.2019
10.04.2019
06.02.2019
23.01.2019
11.01.2019
Я ожидаю, что моя таблица будет отображаться как:
date
10.04.2019
09.04.2019
05.04.2019
02.04.2019
06.02.2019
23.01.2019
11.01.2019
Как отобразить данные в порядке дат?
Комментарии:
1. Это дата типа date? или varchar
2. @M.Hemant его varchar
3. Вы пробовали ответ Гордона Линоффа?
Ответ №1:
Ваша основная проблема заключается не в сохранении даты как date
. Вы должны это исправить.
Чтобы запрос работал, используйте:
order by str_to_date(date, '%m.%d.%Y')
Чтобы исправить данные, вы можете сделать:
update register_table
set date = str_to_date(date, '%m.%d.%Y');
alter table register_table
modify date date;
Вы можете увидеть, как это работает здесь.
Комментарии:
1. Теперь я понимаю, почему мой не работал! Так что в этом
REPLACE
нет необходимости. Спасибо, Гордон.2. @binz . . . Есть ли причина, по которой вы не приняли этот ответ? Это проще, чем альтернатива.
Ответ №2:
Я не знаю, почему ваша дата хранится так, но здесь попробуйте:
SELECT date FROM date ORDER BY STR_TO_DATE(REPLACE(date,'.','-'),'%d-%m-%Y') DESC;
Если вы хотите увидеть, что именно произойдет, запустите этот запрос:
SELECT date,STR_TO_DATE(REPLACE(date,'.','-'),'%d-%m-%Y') FROM date;
Если вы все еще не совсем понимаете, обратитесь к функции MySQL STR_TO_DATE и функции MySQL REPLACE .