mysql生日提醒
如果您的算法取决于该人的出生年份,则显然存在问题.要解决此问题,首先在当前日期之后找到每个人的下一个生日,然后计算该日期与现在之间的差异. SELECT u_birth, DATEDIFF(next_birthday, NOW()) AS distance FROM ( #计算下次生日距离当前时间相差多少天 SELECT *, ADDDATE(birthday, INTERVAL birthday < DATE(NOW()) YEAR) AS next_birthday #计算下次生日日期 FROM ( SELECT *, ADDDATE(u_birth, INTERVAL YEAR(NOW()) - YEAR(u_birth) YEAR) AS birthday #计算今年生日日期 FROM blog_users WHERE s_agehide = 0 ) AS T1 ) AS T2 ORDER BY distance ASC LIMIT 5 结果: '1992-02-29', 20 '1993-03-01', 21 '1987-05-15', 96 '1988-05-15', 96 '1988-09-18', 222 测试数据: CREATE TABLE blog_users (u_birth NVARCHAR(100) NOT NULL, s_agehide INT NOT NULL); INSERT INTO blog_users (u_birth, s_agehide) VALUES ('1987-05-15', 0), ('1988-05-15', 0), ('1988-09-20', 0), ('2000-01-02', 0), ('2000-01-03', 1), ('1988-09-19', 0), ('1988-09-18', 0), ('1992-02-29', 0), ('1993-03-01', 0); 请注意,假设在闰日出生的人在非闰年有2月28日的生日.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!