【问题标题】:How to transform a birth date php/mysql yyyy/dd/mm to an age [duplicate]如何将出生日期php / mysql yyyy / dd / mm转换为年龄[重复]
【发布时间】:2015-08-12 22:44:59
【问题描述】:

我有一个表格,要求用户以 YYYY/MM/DD 的形式输入他们的生日。

该表单将他们的生日提交给database="members_info"table="members",并且该位置称为“dob”。

信息显示为“YYYY-MM-DD”。我试图以某种方式通过代码推送此信息,该代码根据今天的时间将他们的生日更改为年龄,并将该日期回显到页面上。

我的代码如下:

<?php
//connect to database
$db_host = "localhost";
$db_username = "root";
$db_pass = "";
$db_name = "member_info";
$db_table = "members";

@mysql_connect("$db_host","$db_username","$db_pass") or die ("Could Not Connect to Database");
@mysql_select_db("$db_name") or die ("No such database exists");

//querying database
$sql = mysql_query("SELECT * FROM members WHERE id = '1' ");

//fetch results
while ($rows = mysql_fetch_array($sql)) { 
$age = $rows['dob'];
}

//subtract birthdate from birthdate to get age
$from = new DateTime($age);
$to = date("y/m/d");

echo $from->diff($to)->y
?>

我尝试了许多其他选项,但它们都不起作用,我认为这是我得到的最接近的选项。我的代码有什么问题?

另外,当我测试日期函数"date("y/m/d");" 是否有效时,它有效,但日期显示比今天的日期早一天。我迷失在这个看似不可能的任务中。

【问题讨论】:

  • 记住mysql的日期格式是Y-m-d。
  • 如果你想要的年龄就是DOB - current date ?
  • 查看 mysql 日期/时间函数的文档...您可以让 sql server 完成工作,而不是在 PHP 中完成

标签: php mysql date datetime


【解决方案1】:

您可以直接在 MySQL 中完成:

SELECT YEAR(CURRENT_TIMESTAMP) - YEAR(dob) - (RIGHT(CURRENT_TIMESTAMP, 5) < RIGHT(dob, 5)) as age FROM members WHERE id = '1' 

比你访问age 作为 MySQL 中创建的新字段:

$sql = mysql_query("SELECT YEAR(CURRENT_TIMESTAMP) - YEAR(dob) - RIGHT(CURRENT_TIMESTAMP, 5) < RIGHT(dob, 5)) as age FROM members WHERE id = '1' ");

while ($rows = mysql_fetch_array($sql)) { 
    $age = $rows['age'];
}

echo $age;

【讨论】:

  • 我不明白。无论如何,谢谢。
猜你喜欢
  • 2023-03-26
  • 2012-05-05
  • 2013-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
相关资源
最近更新 更多