【问题标题】:Count age from today's birthday [duplicate]从今天的生日算年龄[重复]
【发布时间】:2020-05-21 10:56:25
【问题描述】:

我制作了一个脚本,显示今天过生日的人。 除此之外,我想显示这些人的年龄。 我找到了许多可行的解决方案,但我不知道如何在我当前的代码中实现。

这是我当前的代码:

<?php
$sql = "SELECT * FROM birthday WHERE MONTH(dob) = MONTH(NOW()) AND DAY(dob) = DAY(NOW())";
$result = $conn->query($sql);
if($result->num_rows > 0)
{
while($row = $result->fetch_assoc())
{
echo "<p>".$row["first_name"]." ".$row["last_name"]."</p>";
}
}
else
{
echo "There are no birthdays today";
}
$conn->close();

【问题讨论】:

    标签: php mysql datetime


    【解决方案1】:

    编辑:这当然只在您生日当天和之后才正确。但由于您仅在生日当天显示年龄,因此这个等式在您的情况下是正确的。

    年龄不就是当年减去出生年份吗?因此,您可以将您的选择更改为:

    SELECT *, YEAR(NOW()) - YEAR(dob) AS age FROM birthday WHERE MONTH(dob) = MONTH(NOW()) AND DAY(dob) = DAY(NOW())
    

    或者你可以用php的方式来做:

    $sql = "SELECT * FROM birthday WHERE MONTH(dob) = MONTH(NOW()) AND DAY(dob) = DAY(NOW())";
    $result = $conn->query($sql);
    $current_year = date("Y");
    if($result->num_rows > 0){
        while($row = $result->fetch_assoc()){
            $birthday = date_parse($row["dob"]);
            $age = null;
            if(is_array($birthday)){
                $age = $current_year - $birthday["year"];
            }
            echo "<p>".$row["first_name"]." ".$row["last_name"]." is now " + $age + " years old.</p>";
        }
    }
    else{
        echo "There are no birthdays today";
    }
    $conn->close();
    

    【讨论】:

    • 这就是年龄的定义,不是吗? en.wiktionary.org/wiki/age#Synonyms "[P]eriod (in years[...]) 有些东西还活着"。即出生年份减去当前年份。示例:您出生于 1980 年,2020 - 1980 = 40。这是您的年龄(生日当天及之后)。
    • 没有。问题是关于“显示年龄生日当天”。这就是为什么人们可以忽略这些日子。年龄仅在 2020 年 12 月的生日时显示和计算。
    猜你喜欢
    • 1970-01-01
    • 2011-03-02
    • 2023-02-22
    • 2021-03-17
    • 1970-01-01
    • 2010-10-14
    • 2021-08-21
    • 2023-03-14
    • 1970-01-01
    相关资源
    最近更新 更多