Pat*_*tec 4 sql t-sql sql-server-2005 sql-server-2008
如何在ORDER BY生日的情况下查询完全无视年份的情况.我需要在今天的ASC或DESC中消除/忽视年份和ORDER BY出生日期和出生日期.
以下内容不起作用,因为生日的年代发挥作用.下面的例子显示了当年度被认为会发生什么:
John 01/02/1974
Billy 11/15/2000
Ally 06/25/2008
SELECT * FROM users ORDER BY birthdate
Run Code Online (Sandbox Code Playgroud)
按生日订购时的预期结果:
John 01/02/1974
Ally 06/25/2008
Billy 11/15/2000
Run Code Online (Sandbox Code Playgroud)
编辑:@AaronBertrand的评论是正确的,每年的日期不适用于闰年.你可以用他的解决方案.另一种方式是按月和按顺序排序,例如:
SELECT * FROM users ORDER BY month(birthdate), day(birthdate)
Run Code Online (Sandbox Code Playgroud)
这会将所有日期标准化为 2000 年:
ORDER BY DATEADD(YEAR, 2000-YEAR(birthday), birthday);
Run Code Online (Sandbox Code Playgroud)
这将正确处理闰年婴儿。