2016-11-01 5 views
1

У меня есть два вида формата даты в моей таблице, теперь я хочу показать дату как заказ.SQL date order by

Результаты выглядят следующим образом:

screenshot of column values

Я хочу, чтобы отобразить записи в формате возрастающем одном формате

Любая помощь будет очень ценна

+2

Похоже, вы сохранили их как строки ... Не можете ли вы сохранить их как даты? – JohnHC

+0

Eh, вы храните 'date' как * строку * (' char'/'varchar')? –

+1

Удачи - вам нужно будет сначала преобразовать их из строк в свои разные форматы дат в фактические объекты datetime. Можно ли идентифицировать уникальные форматы, которые у вас есть (вы упомянули два, но я могу видеть по крайней мере три в ваших примерах)? Измените тип базового столбца, чтобы избежать этого в будущем. – Bridge

ответ

5

В SQL Server, его проще всего преобразовать строки, используя встроенные форматы convert(). Это большое неудобство. Вы можете попробовать:

order by coalesce(try_convert(datetime, meeting_status_date), 
        try_convert(datetime, meeting_status_date, 0), 
        try_convert(datetime, meeting_status_date, 101) 
       ) 

try_convert()NULL возвращается, если преобразование не удается. Список форматов конвертации - here.

+0

Спасибо большое @ Gordon Linoff .. – Jays