首页 > 解决方案 > 从今天生日算年龄

问题描述

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

这是我当前的代码:

<?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();

标签: phpmysqldatetime

解决方案


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

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

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();

推荐阅读