Сортировка дат в MySQL - PullRequest
       2

Сортировка дат в MySQL

4 голосов
/ 14 февраля 2011

Я записываю даты в следующем формате:

Mon, February 14, 2011, 08:22:34 AM

Когда я сортирую сообщения по самой последней дате / времени, используя ORDER BY date_time DESC, иногда она сортируется правильно, а иногда нет,Так есть ли лучший способ сбора данных, чтобы сортировка выполнялась правильно?

Например, при работе с десятью записями в строке он мог бы сортироваться правильно, то есть сначала будут отображаться самые последние записи.Тогда после этого он может поместить самый последний в самый низ

Ответы [ 4 ]

5 голосов
/ 14 февраля 2011

За обсуждение OP вы сохраняете дату в виде строки. В MySQL есть много функций сортировки дат, которые могут точно сортироваться, но их необходимо использовать вместе с полем типа DATE. Вам следует либо преобразовать тип поля в дату / дату / время, либо выполнить функцию cast, чтобы превратить их в типы даты для целей сортировки. Как это:

SELECT CAST(datefield as date) AS date_format ORDER BY date_format DESC
2 голосов
/ 14 февраля 2011

Вы должны использовать поле DATETIME вместо поля VARCHAR для хранения дат ...

http://dev.mysql.com/doc/refman/5.1/en/datetime.html

Это позволит вам правильно сортировать и использовать функции даты и времени MySQL в запросах к вашим полям даты и времени.

1 голос
/ 14 февраля 2011

Исходя из того, что вы говорите, что поле является varchar, я предполагаю, что вы получаете ASCII-сортировку строк в поле.Если порядок сортировки не соответствует ожидаемому, проверьте наличие таких вещей, как верхний и нижний регистры и т. Д.

Если вы хотите отсортировать даты, лучше всего использовать тип данных timetime.

1 голос
/ 14 февраля 2011

Захватываете ли вы дату в этом формате или используете какую-то функцию, например, время ()?Если вы сортируете по дате, которая состоит из символов и цифр, а не только по числовому значению, это приведет к проблемам при сортировке записей.

Пожалуйста, исправьте меня, если я вас неправильно понял.1004 * edit: если вы хотите избежать дополнительной нагрузки на сервер, вы можете создать поле varchar, которое будет содержать обработанную дату (ту, которая у вас есть прямо сейчас), и новое int, которое вы можете использовать для экономии времени ();и сортировка записей по дате.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...