2016-03-08 3 views
3

Я пытаюсь получить дату из таблицы в порядке убывания, но когда я пишу order by clause в запросе, это показывает дату в порядке возрастания. Я не могу опубликовать весь запрос. Я отправляю определенную строку, например. заказ по .. когда я попытался это то, что запрос показываетзаказывать в select statement sql server

date 
    01/03/2016 
    26/02/2016 
    25/02/2016 
    06/01/2015 

, но это то, что я хочу в повторно

date 
    06/01/2015 
    25/02/2016 
    26/02/2016 
    01/03/2016 

это то, что я пытался

ORDER BY 
convert(date, account.postdate) DESC,  
account.ACDOCNO ASC  

любое решение?

ответ

0

Вам необходимо изменить дату в ORDER BY от DESC к Asc

ORDER BY 
convert(date, account.postdate) ASC, 
account.ACDOCNO ASC 

или просто

ORDER BY 
convert(date, account.postdate) , 
account.ACDOCNO 

Как ASC является порядок сортировки по умолчанию в SQL Server.

0

Я думаю, что проблема здесь может быть проблемой языка - желаемый вывод, который вы поделили, действительно находится в по возрастанию заказа (который для дат означает, что это было старше и старше). Так просто использовать asc вместо desc и вы должны быть в порядке:

ORDER BY 
convert(date, account.postdate) ASC, -- Here! 
account.ACDOCNO ASC  
+0

но более высокий - более высокий to lower – Bakhtawar

+0

@ Бахтавар нет, вот где ваша ошибка. 'asc' (сокращение от восходящего) означает более низкое до более высокого уровня – Mureinik

+0

@ Бахтавар, чтобы процитировать [Документация SQL Server] (https://msdn.microsoft.com/en-us/library/ms188385.aspx) -« Сорт ASC от самого низкого значение до самого высокого значения. DESC сортирует от самого высокого значения до самого низкого значения. " – Mureinik

0

Это также зависит, как вы сохраните даты в таблице. Вы сохраняете их как тип DATETIME?

Если не здесь родственный сообщение: Order by date (varchar)?

Кстати, что такое convert() здесь делает? Из того, что я проверил в ссылке, он используется для преобразования строки в разные наборы символов.