Порядок по дате поступления - месяц, день и год
Это кажется глупым, но мне просто нужен список дат, которые нужно заказать с самой последней датой сверху. Использование order by DESC
похоже не работает так, как я хочу.
SELECT *
FROM vw_view
ORDER BY EventDate DESC
Он дает мне дату, указанную месяцем и днем, но не учитывает год.
например:
12/31/2009
12/31/2008
12/30/2009
12/29/2009
Нужно больше походить:
12/31/2009
12/30/2009
12/29/2009
12/28/2009
и т.д.
Ответы
Ответ 1
Я предполагаю, что EventDate
- это char или varchar, а не дата, иначе ваш порядок по порядку будет в порядке.
Вы можете использовать CONVERT для изменения значений до даты и сортировки с помощью
SELECT *
FROM
vw_view
ORDER BY
CONVERT(DateTime, EventDate,101) DESC
Проблема с этим, как указывает Sparky в комментариях, если EventDate имеет значение, которое невозможно преобразовать в дату, когда запрос не будет выполнен.
Это означает, что вы должны либо исключить плохие строки, либо позволить плохим строкам перейти к нижней части результатов.
Чтобы исключить неправильные строки, просто добавьте WHERE IsDate(EventDate) = 1
Чтобы позволить неудачным датам идти в нижнюю часть, вам нужно использовать CASE
например.
ORDER BY
CASE
WHEN IsDate(EventDate) = 1 THEN CONVERT(DateTime, EventDate,101)
ELSE null
END DESC
Ответ 2
попробуйте ORDER BY MONTH(Date),DAY(DATE)
ОБНОВЛЕНИЕ ПОЛЬЗОВАТЕЛЯ ANONYMUS:
Попробуйте это:
ORDER BY YEAR(Date) DESC, MONTH(Date) DESC, DAY(DATE) DESC
Отлично работал на JET DB.
Ответ 3
У вас есть поле в строке, поэтому вам нужно будет преобразовать его в datetime
order by CONVERT(datetime, EventDate ) desc
Ответ 4
Каков тип поля EventDate
, так как упорядочение неверно, я предполагаю, что у вас нет определенного типа представления даты/времени, а строка. И тогда американский способ написания дат неприятен для сортировки
Ответ 5
Предполагая, что у вас есть возможность сделать изменения схемы единственным приемлемым ответом на этот вопрос, IMO заключается в изменении базового типа данных на что-то более подходящее (например, date
, если SQL Server 2008).
Хранение дат как строки mm/dd/yyyy
неэффективно, трудно проверить правильность и делает сортировку и расчеты даты ненужными болезненными.
Ответ 6
Если вы изменили формат даты на ГГГГ/ММ/ДД, вы можете использовать этот простой порядок строк, чтобы достичь необходимого вам формирования.
В качестве альтернативы, используя команду SUBSTR (store_name, start, length), вы должны иметь возможность реструктурировать термин сортировки в вышеуказанный формат
возможно, используя следующие
SELECT *
FROM vw_view
ORDER BY SUBSTR(EventDate,6,4) + SUBSTR(EventDate, 0, 5) DESC