MySQL提供了用于计算日期的函数,例如计算年龄或者日期的特定部分。
要肯定你的宠物有多大了,可使用 TIMESTAMPDIFF() 函数,这个函数的第一个参数指定比较结果展现的单位,第二三个参数是两个将要比较的日期,下列查询显示了宠物的出生日期,当前日期以及宠物的年龄,结果使用了别名 age ,这样结果列名更有意义。ide
查询成功了,可是若是结果以特定顺序展现,则更有利于咱们查看。能够经过ORDER BY name子句对结果按name列排序:函数
若是要对结果按年龄排序,仅需更改ORDER BY子句:3d
可使用相似的方法查询动物死时的年龄,能够经过检查death的值是否为NULL来查出已经死亡的动物,而后计算出生和死亡的时间差值:blog
查询使用了death IS NOT NULL而不是 death <> NULL ,这是由于NULL是一个特殊的值,不能使用常规的比较操做符进行比较。
若是想知道哪些动物的生日在下个月,该怎么办呢?对于这类计算,年和日期是无关的信息,咱们仅须要提取出生日期中的月份,MySQL提供了几个函数用来从日期中提取信息,例如YEAR(),MONTH()和DAYOFMONTH(),这里使用MONTH()函数是适合的。简单示例以下:排序
若是当前是4月份,查找下个月过生日的动物:教程
若是当前月份是12月,那么这个查询会有一点复杂,咱们不能仅仅是对当前月份加1,而后查询出生在13月的动物,由于根本没有这个月份,相应的,咱们应该查找出生在1月份的动物。咱们能够经过写查询语句来解决这个问题,不管当前月份是什么。DATE_ADD()用于对给定日期增长时间间隔。若是要对CURDATE()的时间值增长1个月,而后用MONTH()查出日期月份,结果就是咱们要求的月份:it
另一种方法是查询当前月份,月份加1获得下一个月的月份,而后使用取模(MOD)函数将12月份的月转换成0。class
MONTH()函数返回一个1-12之间的数值, MOD(something,12) 函数返回一个0-11之间的值。所以加1必定是在MOD()函数以后。
若是计算使用了无效日期,则计算失败并产生警告:基础