mysql生日提醒_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日的生日.

此外,您的查询不包括用户的用户ID.你可能想要添加它,我想.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值