如何解决选择是否,距生日的天数
我最近开始学习 MySQL,我需要使用 select if 编写一个查询。目标是显示表中每个人的生日天数。
到目前为止,我有以下代码:
select datediff(date(concat(year(now()),'-',month(Person.Birthday),day(Person.Birthday))),now()) as 'Days to Birthday'
from Person
where datediff(
date(concat(year(now()),now()) >= 0;
到目前为止一切顺利。这有效,我也有结果
如何将这些行集成到 select if 语句中?前两天我尝试了,但我没有成功。
此外,我尝试使用 case 和 where 获得结果,但我也没有运气。
如果有人能提供解决方案,我会很高兴!
解决方法
您必须以两种方式计算距生日的剩余天数,
- 对于即将过生日的当年
- 生日刚刚过去的明年,明年即将到来。
如果天数从 #1 开始小于零,则表示生日已经过去,需要考虑明年来计算天数。以下是查询:
SELECT z.birthday,IF(z.less_days >=0,z.less_days,z.more_days) AS 'Days to Birthday'
FROM
(
SELECT birthday,datediff(date(concat(year(now()),'-',month(Person.Birthday),day(Person.Birthday))),now()) as less_days,datediff(date(concat(year(now())+1,now()) as more_days
FROM Person
) AS z
注意:我使用外部查询来消除在 IF
条件返回“true”时重新计算天数的需要。
考虑到当前日期是 2021 年 5 月 16 日,输出将是
birthday Days to Birthday
----------------------------
2001-06-01 16
2002-07-20 65
2003-05-01 350
2004-05-16 0
2004-05-15 364
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。