2013-03-12 2 views
-1

Мне нужно указать название месяца, например, январь, февраль, марш, апрель ... до DEC, и я получаю это с помощью datepart(m,Time), но у меня есть данные с 2012 года и 2013 года. 2012, январь 2013 г., февраль 2012 г., февраль 2013 г., но я тоже хочу заказать год, так что все данные 2012 года должны быть первыми, а затем - данными 2013 года.Сортировать по названию месяца и по году

+0

Пожалуйста, напишите ваш текущий вопрос –

+2

** [Что вы пробовали ?] (http://mattgemmell.com/2008/12/08/what-have-you-tried/) ** – Luv

+0

** Помог ли кто-нибудь из нас? ** – whytheq

ответ

0

Попробуйте это:

ORDER BY DatePart(y,time),DatePart(m,time) 
+0

Я пробовал это, но все же это дает мне Ян 2012, январь 2013, февраль 2012 и февраль 2013 – SQllearner

+0

Пожалуйста, объясните ** почему **, которые могли бы решить проблему. – fuxia

4

Это частичное решение частичного вопроса, но в целом вы должны использовать:

ORDER BY YEAR(TimeColumn), DATEPART(m, TimeColumn)

+0

Я пробовал это, но все же это дает мне янв 2012, янв 2013, февраль 2012 г. и февраль 2013 г. – SQllearner

+1

Это не так. Отправьте свой код и некоторые примеры данных. – JNK

+0

Если я впервые положу год (время), а затем datepart (m, time), он заказывает по году означает, что все данные 2012 года поступают первыми, но имена месяцев не в порядке – SQllearner

0

Повторяя то, что уже сказал

SELECT '01 jan 2012' AS Dt INTO #tempDates 
UNION 
SELECT '01 jun 2012' 
UNION 
SELECT '10 oct 2012' 
UNION 
SELECT '01 jan 2013' 

--1 
SELECT Dt 
FROM #tempDates 
ORDER BY DatePart(YY,Dt),DatePart(m,Dt) 

--2 
SELECT Dt 
FROM #tempDates 
ORDER BY YEAR(Dt), MONTH(Dt) 

--3 
SELECT Dt 
FROM #tempDates 
ORDER BY YEAR(Dt), DatePart(m,Dt) 
Смежные вопросы