我在数据库列中有日期,记录如下
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 它给了我当前的月份日期+任何年份日期。 但我希望当前的月份+当前年份日期和其他日期。
答案 0 :(得分:4)
假设startdate
列的数据类型为date
或datetime
,并且当前日期之后有日期,并且您希望当前年份和月份的日期排在第一位,然后你可以这样做:
SELECT *
FROM tablename
ORDER BY CASE
WHEN MONTH(startDate) = MONTH(GETDATE())
AND YEAR(StartDate) = YEAR(GETDATE()) THEN 0
ELSE 1
END, startDate;