-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 列のデータ型は日付です

私はこれを試しました

ケース When month(StartDate) < month(GetDate()) Then month(StartDate) +12 ELSE month(StartDate) END それは私に現在の月の日付+任意の年の日付を最初に与えます。しかし、私は今月+今年の日付を最初に、そして他の日付が欲しいです。

4

1 に答える 1

5

startdateのデータ型がdateordatetimeで、現在の日付より後の日付があり、現在の年と月の日付を最初に表示したい場合は、次のようにします。

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 に答える