得到用户的年龄,本质上是取2个时间点间隔时间的操作。
MYSQL中:
datediff(t1,t2)可以得到两个日期间相差的天数,但是直接去除365,显然是很不准确的。
推荐使用TIMESTAMPDIFF(p1,t1,t2),
p1的参数为unit类型,可传入:
- FRAC_SECOND。表示间隔是毫秒
- SECOND。秒
- MINUTE。分钟
- HOUR。小时
- DAY。天
- WEEK。星期
- MONTH。月
- QUARTER。季度
- YEAR。年
比如:
CREATE TRIGGER cal_age
BEFORE INSERT
ON t_user FOR EACH ROW
BEGIN
timestampd
DECLARE yage INT(4);
SELECT
CEIL(ABS(TIMESTAMPDIFF(MONTH,CURDATE(),new.ibirthday)/12))
into yage ;
SET NEW.age = yage;
END;
就可以通过触发器拿到一个很接近的年龄。
题外:JAVASCRIPT可以利用时间戳得到精确时间,再进行转换,详见自己写的JS日期工具。
http://jingyan.baidu.com/article/fa4125acde37f928ac70920b.html