У меня вопрос о том, как сортировать дату в mysql. Это может показаться глупым, поскольку это можно сделать с order by date asc
. В моей таблице дата фактически хранилась в строке с форматом, например, Wed,2014-02-19
. Скажем, у меня есть таблица, как показано ниже.
id | user_id | date 1 | 38 | Wed,2014-02-19 2 | 38 | Wed,2014-02-26 3 | 38 | Wed,2014-02-12 4 | 38 | Wed,2014-02-05
для случая, как и выше, я все еще могу сортировать, используя order by date asc
так как все даты – среда. Но пусть говорят, что один из дней отличается, как показано ниже,
id | user_id | date 1 | 38 | Wed,2014-02-19 2 | 38 | Wed,2014-02-26 3 | 38 | Thu,2014-02-13 4 | 38 | Wed,2014-02-05
mysql сначала сортирует Thu,2014-02-13
.
В любом случае, чтобы сделать в mysql?
Просто отсортируйте запятую после запятой:
order by substring_index(date, ',', -1)
Функция и формат даты и времени Mysql
вы можете иметь исходный столбец даты как тип DATE и можете создать свой строковый формат столбца даты как псевдоним для него и отсортировать его, используя исходный столбец даты. более четко указано в приведенной ссылке, надеюсь, это поможет.
Мне кажется, что вы используете неправильный тип для столбца даты. Используете ли вы DATE или DATETIME или varchar для столбца даты? Если вы переключите его на DATE, ASC и DESC будут работать правильно.
Ссылка: http://dev.mysql.com/doc/refman/5.5/en/datetime.html
Попробуйте преобразовать поле даты из строки в datetime, используя функцию STR_TO_DATE
например:
SELECT id,user_id,STR_TO_DATE(date,'%W,%Y-%m-%d') AS new_date FROM 'table' ORDER BY new_date;