当前位置: 首页 > 知识库问答 >
问题:

MySQL获取出生日期/生日的下一个实例

姜嘉良
2023-03-14

我试图在MySQL中找到下一个基于DOB的日期实例-例如,如果DOB是1975-12-20,我们今天运行它,那么下一个生日是2020-12-20。

同样,如果DOB为1975-12-19,则下一个生日为2020-12-19,但如果DOB为1975-12-21,则下一个生日为2019-12-21。

我可以在PHP中通过分解日期和替换年份来实现这一点,但我想尝试在MySQL中实现,因为它会更快地运行,等等

DOB是日期字段0000-00-00

我发现如何计算下一个生日给定的出生日期?对于postgressql,我认为它可以工作,但它使用了一个名为age的函数,在MySQL中似乎不起作用

共有3个答案

壤驷乐邦
2023-03-14

也许是这样。就本年度而言。

select DATE_ADD(dob, INTERVAL TIMESTAMPDIFF(year, dob, now()) + (dayofyear(dob) > dayofyear(now())) YEAR) as result

在沙箱中https://paiza.io/projects/iCDmx0RP1jck56xXzGu2Jw?language=mysql

端木权
2023-03-14

创建了一个摆弄示例数据和查询以获取下一个生日。下面的共享是查询和sql FIDLE链接:

select *, 
IF(month(dob) = month(now()) AND day(dob) > day(now()), concat(Year(now()),'-',month(dob),'-',day(dob)) ,concat(Year(now())+1,'-',month(dob),'-',day(dob))) as nextBirthDay
from TableName

sql小提琴:http://sqlfiddle.com/#!9/033ad4/18

凌恩
2023-03-14

你可以做日期算术如下:

dob
+ interval (
    year(curdate()) 
    - year(dob) 
    + (dayofyear(curdate()) > dayofyear(dob))
) year

基本上,这取当前日期和出生年份之间的差异,如果当前年份的生日是过去的,则加1。这为您提供了添加到dob以获得下一个生日的年数。

在2月29日,上述表达式将在非闰年的2月28日返回。

 类似资料:
  • 在Postgres数据库中给定此架构: 我如何查询表以获得每个人今天之后的下一个生日的日期? 例如,如果Bob的出生日期是2000-06-01,那么他的下一个生日将是2016-06-01。 注意:我不是在寻找一个预定义的,而是一个人出生的下一个周年纪念日。 我已经用Python写了等效的: 然而,我想看看博士后是否能以更有效的方式做到这一点。

  • 问题内容: 如何计算人的年龄(基于dob列),并使用新值将一列添加到数据框中? 数据框如下所示: 我尝试执行以下操作: 但是,收到以下错误: TypeError:-:“ datetime.datetime”和“ str”的不受支持的操作数类型 问题答案: 产量 看来您的栏目前是字串。首先,将它们转换为using 。 该格式将最后两位数字转换为年份,但不幸的是假设的平均值为2052。由于这可能不是希

  • 问题内容: 我想获取我朋友列表中的所有生日。我已经尝试了好几天。我的代码如下。 每次我使用此代码都会产生错误。令牌都显示为空,响应都显示为问题“必须使用活动访问令牌来查询有关当前用户的信息” 问题答案: 创建一个方法: 在方法主体中,您必须编写: } 上面的函数将从facebook获取json数据。您需要解析json以获得单独的配置文件数据。 来自Facebook的样本配置文件json将如下所示:

  • 您的生日日期   设定您的生日日期。

  • 用户输入员工的出生日期,但任务要求您验证条目。 我希望应用程序显示的是一个错误,当用户输入生日的日期为33或什么,因为在B. O. D.中没有这样的一天。 此外,当用户单击“保存”时,文本字段中的数据应保存到arraylist中。当用户单击“打印”时,保存在arraylist中的数据应显示为以前的信息。

  • 问题内容: 如何在where子句中使用下个月的第一天和最后一天? 问题答案: 采用: