gpt4 book ai didi

mysql - 选择即将到来的生日的优雅方式

转载 作者:行者123 更新时间:2023-11-29 23:44:19 24 4
gpt4 key购买 nike

经过一段时间的搜索,我发现没有“好的”解决方案可以仅通过一个 select 语句从 MySQL 数据库获取即将到来的生日。我在网络上发现了许多不同的策略,但没有一个真正有效,尤其是在今年的变化时期。

现在我想分享我的最终解决方案:

SELECT mem_id, mem_dateBirth, MONTH(mem_dateBirth), DAY(mem_dateBirth)
FROM rs_mem
WHERE mem_dateBirth IS NOT NULL AND
mem_dateBirth > '1900-01-01'
ORDER BY (date_format(NOW(), '%m%d') >= date_format(mem_dateBirth, '%m%d')),
date_format(mem_dateBirth, '%m%d');

结果将是包含所有即将到来的生日的列表(如果生日是在年份更改之后)。

最佳答案

您的查询没问题,这是使用 CASE 语句对结果进行排序的另一种方法:

SELECT M.mem_id
, M.mem_dateBirth
, MONTH(mem_dateBirth) AS month
, DAY(mem_dateBirth) AS day
FROM rs_mem M
WHERE IFNULL(M.mem_dateBirth, '1900-01-01') > '1900-01-01'
ORDER BY CASE
WHEN DATE_FORMAT(M.mem_dateBirth, '%m%d') >= DATE_FORMAT(NOW(), '%m%d') THEN 1
ELSE 0
END DESC, date_format(mem_dateBirth, '%m%d');

我还修改了您的 WHERE 子句以使其更短(使用 IFNULL)。

希望这对您有帮助。

关于mysql - 选择即将到来的生日的优雅方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26031737/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com