ORDER BY
(MONTH(resource_date) - MONTH(GETDATE()) + 12) % 12,
DATEADD(year, YEAR(GETDATE()) - YEAR(resource_date), resource_date),
YEAR(resource_date)
第 1 項は、resource_date
の月によってプライマリ オーダーを設定します。 (当月が最初、前月、最後)。第 2 項は、日付の年に関係なく、1 か月以内のタイムスタンプを並べ替えます。日付に時間の部分が含まれていない場合、または時間の部分がまったく関係ない場合は、DAY(resource_date)
に置き換えることができます .最後に、最後の項は年を考慮に入れて、他の点では同一の日付にします (単純に resource_date
にすることもできます) ).