SQL语句得到较为精确的用户年龄

得到用户的年龄,本质上是取2个时间点间隔时间的操作。


MYSQL中:

datediff(t1,t2)可以得到两个日期间相差的天数,但是直接去除365,显然是很不准确的。

推荐使用TIMESTAMPDIFF(p1,t1,t2),

p1的参数为unit类型,可传入:

  1. FRAC_SECOND。表示间隔是毫秒
  2. SECOND。秒
  3. MINUTE。分钟
  4. HOUR。小时
  5. DAY。天
  6. WEEK。星期
  7. MONTH。月
  8. QUARTER。季度
  9. 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值