我有一张表,我有一个字段。字段名称是dob,我将出生日期存储为以下格式20-feb-2014
。
我正在编写一个查询来检索年龄在18到35之间的行。我该怎么做?
我尝试了以下查询:
SELECT * FROM member WHERE gender='male' AND dob BETWEEN 18 AND 40;
如何将其转换为以下格式? 20-feb-2014
如何获得所需的输出?
提前致谢。
答案 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'
答案 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;