如何从MySQL中获取dob的年龄?

时间:2014-12-21 06:04:38

标签: php mysql

我有一张表,我有一个字段。字段名称是dob,我将出生日期存储为以下格式20-feb-2014

我正在编写一个查询来检索年龄在18到35之间的行。我该怎么做?

我尝试了以下查询:

SELECT * FROM member WHERE gender='male' AND dob BETWEEN 18 AND 40;

如何将其转换为以下格式? 20-feb-2014

如何获得所需的输出?

提前致谢。

3 个答案:

答案 0 :(得分:1)

您必须先使用str_to_date将日期字符串格式化为日期对象,然后将年龄计算为timestampdiff(year, str_to_date(dob,'%d-%b-%Y'), CURDATE())

SELECT * 
from member 
where timestampdiff(year, str_to_date(dob,'%d-%b-%Y'), CURDATE())
between 18 and 40 and gender='male'

See Demo

答案 1 :(得分:0)

创建一个查询,该查询将从数据库中输入的dob值中减去当前日期。

答案 2 :(得分:0)

# object oriented
$from = new DateTime('1970-02-01');
$to   = new DateTime('today');
echo $from->diff($to)->y;

# procedural
echo date_diff(date_create('1970-02-01'), date_create('today'))->y;

See Demo