这就是案例......
这些是一些数据库结构。
类别字段将根据提供的DOB基于计算的年龄自动提供(儿童,成人,年轻)。
我正在使用Mysql
。
在插入mytable之前创建TRIGGER ins_data 对于每一行 BEGIN
--calculate first age form DOB--
--based on the calulated result--
--my category field will be as (children, young or adult)--
--insert data into the database--
END;//
答案 0 :(得分:1)
使用像这样的mysql,
SELECT TIMESTAMPDIFF(YEAR, dob, CURDATE()) AS age FROM table_name;
在php中
<?php
$cur= date('Y');
$dob = date('Y',strtotime("database value here"));
echo $cur - $dob;
?>
无需在数据库中存储年龄。(已由Digital Chris
建议)
答案 1 :(得分:0)
分隔符//
在插入mytable之前创建TRIGGER ins_data 对于每一行 BEGIN
--calculate first age form DOB--
--based on the calulated result--
--my category field will be as (children, young or adult)--
--insert data into the database--
END;//
答案 2 :(得分:0)
当我试着在我的评论中解释时,你不想在你的数据库中存储这样的东西。一旦你这样做,它就会成为一种维护问题,并且几乎立即过时。例如:一个9岁的人进入数据库。下周是他的生日。他现在已经10岁了,但数据库仍然有child (0-9)
的条目供他使用。糟糕的设计。
而是选择您想要的内容:
SELECT TIMESTAMPDIFF(YEAR, dob, CURDATE()) AS age,
CASE
WHEN TIMESTAMPDIFF(YEAR, dob, CURDATE()) < 10 then "child"
WHEN TIMESTAMPDIFF(YEAR, dob, CURDATE()) > 14 then "adult"
ELSE "young"
END as category
FROM table_name;
以下是它的实施方案:http://sqlfiddle.com/#!9/bbc860/1