2015-01-13 2 views
1

Я сохранил дату в varchar type в sql server 2008 в формате «dd-MMM-yyyy» во всех таблицах. теперь я использую Union All, чтобы объединить данные двух таблиц и заказать их по дате в формате «dd-MM-yyyy». , но, к сожалению, я не получаю его в любом восходящем или нисходящем порядке. , пожалуйста, помогите как можно скорее Заранее благодаренКак использовать Union All с заказом на заказ Дата

+0

подсказка: вы можете использовать функции в 'п ORDER BY' –

ответ

3

Вы сохранили даты неправильно. Не храните даты в столбцах varchar!

Исправление состоит в том, чтобы изменить вашу схему, чтобы поместить даты в столбцы даты и времени. Тогда ORDER BY прост.

Кроме того, если (и это чрезвычайно сильный «если», которые должны действительно никогда бывает) вы настаиваете на хранение даты в виде текста, по крайней мере, иметь хороший смысл использовать Сортируемый формат. Что-то, скажем, стандартное. Что-то вроде, я не знаю, ISO 8601, который помещает каждый компонент даты в порядке убывания.

+0

На самом деле я не в состоянии изменить формат даты, потому что я являюсь сотрудником Компания. поэтому я должен делать то, что они мне говорят. и я хочу использовать эту дату в формате dd-mm-yyyy в отчете кристалла для отображения. и эта запись должна быть в определенном порядке. – user3275644

+0

Crystal Reports будет форматировать дату для вас, как вы хотите, если вы сохранили ее правильно. –

0

Прежде всего, вы не должны хранить Date в Varchar колонке, как Joel Coehoorn предложил. Во всяком случае, вы можете попробовать этот запрос,

-- Converts to date type from varchar, then convert to dd/MM/yyyy and replace/with - 
SELECT REPLACE(CONVERT(VARCHAR(11),CAST(DATECOL AS DATE),103),'/','-') 
DATECOL 
FROM YOURTABLE 
WHERE ISDATE(DATECOL)=1 
ORDER BY CAST(DATECOL AS DATE) 
  • ISDATE(DATECOL)=1 извлечет действительные даты от вас колонки. Он будет безопасным по типу.

  • SQL FIDDLE

Примечание: Вам не нужно сказать SQL Server к порядку в вашем формате. Если тип даты, SQL Server будет автоматически делать это, когда вы даете ORDER BY CAST(DATECOL AS DATE)

Смежные вопросы