如何在ORDER BY生日的情况下查询完全无视年份的查询。我需要在今天的ASC或DESC中消除/忽略年份和生日月和出生日的订单。
以下内容不起作用,因为生日的年代开始发挥作用。下面的例子说明了当年度被认为会发生什么:
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
答案 0 :(得分:5)
SELECT * FROM users ORDER BY month(birthdate), day(birthdate)
答案 1 :(得分:4)
这会将所有日期标准化为2000年:
ORDER BY DATEADD(YEAR, 2000-YEAR(birthday), birthday);
这将正确处理闰年婴儿。
答案 2 :(得分:1)
尝试
SELECT * FROM users ORDER BY SUBSTRING(birthdate, 1, 5);
答案 3 :(得分:0)
尝试此查询
它以升序排列生日
SELECT `id`, `teacher_name`, `phn_num`, `date_of_birth`, `date_of_birth` + INTERVAL(YEAR(CURRENT_DATE()) - YEAR(`date_of_birth`)) + 0 YEAR AS currbirthday, `date_of_birth` + INTERVAL(YEAR(CURRENT_DATE()) - YEAR(`date_of_birth`)) + 1 YEAR AS nextbirthday FROM `teacher_details` ORDER BY CASE WHEN currbirthday >= CURRENT_DATE() THEN currbirthday ELSE nextbirthday END