MySqlデータベースのテーブルに対してクエリを実行する必要があります。結果の行の順序は次のようになります。
今日が10/09/12の場合:
...
11/09/12
12/09/12
15/09/12
08/09/12 <--here start the past dates
07/09/12
05/09/12
....
MySQLでこれを直接達成する方法はありますか?
私はこのように解決しました:
まず、selectステートメントには、日付が過去か未来かを示す新しいブール値が含まれています。
SELECT DISTINCT *,CASE WHEN startdate < CURDATE() THEN 0
ELSE 1 END AS past_or_future
次に、二重の「順序付け」を実行しました。最初はpast_or_futureブール値で、次に日付で、次のような条件を使用します。
ORDER BY past_or_future DESC , CASE WHEN past_or_future = 1 THEN startdate END ASC, CASE WHEN past = 0 THEN startdate END DESC
このようにして、最初に日付順に並べられたすべての今後の日付(低い値から高い方へ)を取得し、次に日付から並べ替えられたすべての過去の日付(高い方から低い方へ)を取得しました。