Как отобразить недавно добавленные данные по порядку дат в MySQL?

#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 .