计算日期

在mysql中有一种方法,可以计算当前日期和差值,比如根据用户的出生日期可以算出年龄。

mysql> select name, species,birth from pet order by species,birth desc;
+----------+---------+------------+
| name     | species | birth      |
+----------+---------+------------+
| Chirpy   | bird    | 1998-09-11 |
| Whistler | bird    | 1997-12-09 |
| Claws    | cat     | 1994-03-17 |
| Fluffy   | cat     | 1993-02-04 |
| Fang     | dog     | 1990-08-27 |
| Buffy    | dog     | 1989-05-13 |
| Bowser   | dog     | 1979-08-31 |
| Puffball | hamsjd  | 1999-03-28 |
+----------+---------+------------+

查询所有竖线显示如下,那么这个年龄怎么知道在今天他们是多少岁呢

执行以下命令:

mysql> select name, birth,curdate(),(year(curdate())-year(birth))-(right(curdate(),5)<right(birth,5)) as age from pet;
+----------+------------+------------+------+
| name     | birth      | curdate()  | age  |
+----------+------------+------------+------+
| Fluffy   | 1993-02-04 | 2018-07-29 |   25 |
| Claws    | 1994-03-17 | 2018-07-29 |   24 |
| Buffy    | 1989-05-13 | 2018-07-29 |   29 |
| Fang     | 1990-08-27 | 2018-07-29 |   27 |
| Bowser   | 1979-08-31 | 2018-07-29 |   38 |
| Chirpy   | 1998-09-11 | 2018-07-29 |   19 |
| Whistler | 1997-12-09 | 2018-07-29 |   20 |
| Puffball | 1999-03-28 | 2018-07-29 |   19 |
+----------+------------+------------+------+
9 rows in set (0.00 sec)

这个命令用到了内置函数,select name,birth, curdate()到这里我相信大家应该没什么问题主要输后面一句(year(curdate())-year(birth))-(right(curdate(),5)<right(birth,5))这一句我们逐个分析

year(curdate())-year(birth))是取当前年和出生年份差值

(right(curdate(),5)<right(birth,5))是比较当前月份和生日的月份差值,当前月份小于出生的月份则整体返回1

right(curdate(),5)表示取日期的最后5位,横线也算在内例如上面的就取 7-29

经过上面的介绍想必大家也都清楚,首先用年份差值计算大致的年龄,在根据日期的差值计算是否今年的生日已经过了


这是根据日期的简单计算

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值