当前位置:首页 > java知识学习_java技术文章 > 正文

mysql中timestampdiff时间差函数用法详解与案例

浏览374+

一、时间差函数简介

凡是用过mysql数据库的童鞋们应该多多少少都会经常接触到时间日期类的函数应用,不管我们后台是用Java语言还是PHP或者是python语言,编写程序时都会经常遇到做日期计算和日期时间差值计算这种类型的业务需求。

今天我们就介绍mysql数据库中的一个名字叫timestampdiff的时间差函数,该函数是mysql内置的便于程序员做两个时间计算插值的日期函数,它的具体语法格式如下:

TIMESTAMPDIFF(unit,begin,end);

该函数中传入了三个参数分别是unit、begin和end,首先我们来看第二个begin和第三个参数end,第二个参数传入的是初始时间,第三个参数传入的是结束时间,该方法明确要求初始时间要小于结束时间,意思就是做插值计算时使用begin减去end,然后得到结果值。

第一个参数是两个时间差值计算得出的结果的相关单位,该值的单位可以是年、月、日,也可以是时、分、秒,以下是罗列出的该值的所有单位详细结果:

timestampdiff函数的返回值的相关单位一览图

二、timestampdiff时间差函数的要点详解

该函数的要点部分就是返回结果值必须是整数而不可以是小数,比如我们返回值的单位是Month月,那么月后面多余的天数就会被忽略掉。

如果我们的返回结果值是天,那么天后面多出来的小时数就会被忽略掉,假如我们设置的返回值结果是时,那么两个差值计算出的后面的分或者是秒就被忽略掉,所以它必须是整数,如果大家还是对timestampdiff函数一知半解的话可以参考下面的代码案例。

三、时间差值计算函数用法代码案例

案例一:计算差值结果为月的代码

计算结果为月的时间差值计算代码

上图我们贴出来的是mysql中应用timestampdiff函数计算时间差值的一个结果图,上图中显示得返回值类型为MONTH,然后两个差值计算结果是5,刚好差值是五个月。

由于我们设置的初始时间和结束时间刚好是五个月,一天不多一天不少,这个案例后面没有多余的天数,比如说五个月零几天,所以看不出忽略的结果,我们可以接下来继续看下面的案例。

案例二:计算差值结果为分的代码

两个时间进行差值计算返回结果为分的详细代码

上图中的案例我们是为了应用timestampdiff函数计算两个时间的差值相差了多少分钟,故我们将时间单位改为了minute。

由于我们为了测试使用分钟时的值是整数值,它会把后面的多余的秒给忽略掉,因此我们设置这两个时间的时候,差值不是刚好是整数,实际的差值应该是45分零五十九秒,而上图中打印出来的结果是45分,很明显将后面的49秒给忽略掉了,这就是我们上文中所说的取整后忽略后面的结果。

当该函数时间单位设置为minute时,它就只考虑minute部分,后面的秒和毫秒都会忽略掉,同理当我们设置为月、天、年的时候,也是这个道理,假如将时间单位设置为月,那么它的返回结果就只考虑月的部分,后面的天、小时、分钟全部会忽略掉。

案例三:timestampdiff函数计算部门员工年龄

下面我们来做一个实际应用的案例,比如说我们公司有一个部门儿,需要统计该部门所有员工的年龄,我们也可以用该函数进行计算。

部门员工数据表

上图是我们设计的一张部门员工的数据库表,并且插入了部门员工的每一位员工的出生日期,然后我们写sql语句查询,并计算出该部门儿下每位员工的年龄,详见下图。

上图中就是我们设计的sql语句,并且应用了timestampdiff函数,由于是计算员工的年龄,因此返回结果值用的是YEAR,然后又使用了now()函数,取的是现在的的时间点,减去每位员工的出生日期得出来了每个员工的年龄。

四、该函数与datediff()函数之间的区别

这两个函数单纯字面意思上来看有点相似,一个叫时间戳函数计算,一个叫日期函数计算,如果对时间戳比较熟悉的朋友们,应该可以大致可以猜到,timestampdiff能够精确到年月日时分秒的单位结果,而datediff()只能精确到天。

datediff()函数的语法结构与测试结果

上图是应用datediff()函数对两个时间日期进行差值计算得出的结果,该函数插值计算只能计算为天,是无法计算相差多少小时多少分钟和多少秒的。

五、其它日期时间函数介绍

跟时间相关的日期函数汇总

上图中是我们根据工作中常用到的经验啊总结出来的使用频率比较高的一些计算日期的函数,像now()函数,我们在上面都已经在案例中使用过了,它返回的结果值是系统的当前的时间点,格式是也是年月日时分秒的表现形式。

而curdate()函数和curtime()函数一个显示的是系统当前时间的年月日信息,而另一个则显示的是系统当前时间的时分秒信息。

 

相关文章推荐

MYSQL中 datediff、timestampdiff函数的使用

timestampdiff在mysql与db2中用法

时间差函数TIMESTAMPDIFF、DATEDIFF的用法

MySQL timestampdiff()函数

请教db2的timestampdiff函数计算天数差不对的问题

vertica系列:时间相关函数

计算获取TimeStamp的时间差

DB2数据库计算时间差

MYSQL中 datediff、timestampdiff函数的使用

sql计算时间差的datediff()函数怎么用