-1

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

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它首先给我当前月份日期+任何年份日期。但我想要当前月份+当前年份日期和其他日期。

4

1 回答 1

5

假设该startdate列是数据类型dateor datetime,并且在当前日期之后有日期,并且您希望那些具有当前年份和月份的日期排在第一位,那么您可以这样做:

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

SQL 小提琴演示

于 2013-03-09T12:23:23.900 回答