5

年を完全に無視して誕生日で注文するクエリを作成するにはどうすればよいですか。ASC または DESC のいずれかで、今日の日付から年と ORDER BY 生年月日と生年月日を削除/無視する必要があります。

生年月日が関係するため、以下は機能しません。以下の例は、年を考慮したときに何が起こるかを示しています。

John   01/02/1974
Billy  11/15/2000
Ally   06/25/2008

SELECT * FROM users ORDER BY birthdate

誕生日で注文した場合の期待される結果:

John   01/02/1974
Ally   06/25/2008
Billy  11/15/2000
4

4 に答える 4

6

編集: @AaronBertrand のコメントは正しいです。閏年には年の日付は適用されません彼のソリューションを使用できます。もう 1 つの方法は、次のように月と日で並べ替えることです。

SELECT * FROM users ORDER BY month(birthdate), day(birthdate)
于 2012-06-26T17:55:12.210 に答える
4

これにより、すべての日付が 2000 年に正規化されます。

ORDER BY DATEADD(YEAR, 2000-YEAR(birthday), birthday);

これにより、うるう年の赤ちゃんが正しく処理されます。

于 2012-06-26T18:02:04.440 に答える
1

試す

SELECT * FROM users ORDER BY SUBSTRING(birthdate, 1, 5);
于 2012-06-26T17:56:16.167 に答える