2015-09-02 3 views
1

В моем запросе SELECT, у меня есть: MIN(a.orderdue) AS «старейшей даты заказа»Форматирование даты, затрагивающей MIN

Это работает в том, что она приносит через старейшую дату заказа, однако он приносит через формат дату, как: 2015-06 -11 11: 30,000

Таким образом, я внес изменения в SELECT, запрос:

MIN (CONVERT(varchar(17),a.orderdue,103)) AS 'Oldest order date' 

Это приводит дату через, как 11/06/2015, который является предпочтительным.

Но я заметил, что это повлияло на выход: функция MIN больше не возвращает первую (старую) дату, но совершенно другое значение.

Я понимаю, что этот вопрос трудно ответить без возможности выполнить запрос yourelf, но очевидно, что изменение формата для даты повлияло на вывод MIN. Есть ли способ изменить форматирование даты без этого?

Благодаря

+1

Как только вы преобразовать дату в VARCHAR, он сравнивается как VARCHAR, при этом первый символ сравнивается, затем второй символ, поэтому при сравнении строк строка «01/01/2050» появляется после «31/12/1900», так как «3> 1», и это все, что используется для сравнения. Как было сказано в ответе, вам сначала нужно получить минимум, а затем применить форматирование - хотя на самом деле форматирование - это что-то, что обычно осталось для уровня представления и не обрабатывается в SQL. – GarethD

+0

Спасибо, что взяли на себя труд ответить и отметили re varchar. –

ответ

5

Вам нужно применить форматирование после получения минимум:

CONVERT(varchar(17), min(a.orderdue),103)