按当前月份的日期排序,然后按所有其他日期排序

时间:2013-03-09 12:09:30

标签: sql tsql sql-server-2005

我在数据库列中有日期,记录如下

Startdate 
Dec-1-2011
Dec-1-2012
April-5-2013
Dec-12-2013
Jan-1-2013
Jan-12-2013
Feb-25-2013
March-2-2013
March-3-2013
April-6-2013
Feb-1-2013
Dec-1-2013
Dec-1-2010

我希望sql查询中的所有记录,但按当前月份和年份排序,因此当前月份和年份记录将首先出现,然后是其他记录。

StartDAte列数据类型为日期

我试过这个

案例当月(StartDate)<月(GetDate())然后是月(StartDate)+12 ELSE月(StartDate)END 它给了我当前的月份日期+任何年份日期。 但我希望当前的月份+当前年份日期和其他日期。

1 个答案:

答案 0 :(得分:4)

假设startdate列的数据类型为datedatetime,并且当前日期之后有日期,并且您希望当前年份和月份的日期排在第一位,然后你可以这样做:

SELECT *
FROM tablename
ORDER BY CASE 
           WHEN MONTH(startDate) = MONTH(GETDATE())
            AND YEAR(StartDate)  = YEAR(GETDATE()) THEN 0
           ELSE 1
         END, startDate;

SQL Fiddle Demo