mysql查询获得两个时间的时间差方式
获得当前时间和另一时间的时间差
?1 | SELECT TIMESTAMPDIFF( SECOND ,( select last_locationTime from municipal_employee where employee_id=9),now()) as diffTime; |
mysql的
?1 | TIMESTAMPDIFF( SECOND ,starttime,endtime) |
函数获得时间差,得到的可以是DAY/天,HOUR/小时,MINUTE/分钟,SECOND/秒。
其中starttime为时间小的那个时间,endtime为时间大的时间。
now()函数为获取当前日期时间
mysql最全的计算时间差
计算两日期时间之间相差的天数,秒数,分钟数,周数,小时数,这里主要分享的是通过MySql内置的函数 TimeStampDiff() 实现。
函数 TimeStampDiff() 是MySQL本身提供的可以计算两个时间间隔的函数,语法为:
?1 | TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2) |
返回日期或日期时间表达式datetime_expr1 和datetime_expr2the 之间的整数差。
其中unit单位有如下几种,分别是:FRAC_SECOND (microseconds), SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, YEAR 。
该参数具体释义如下:
-
FRAC_SECOND
表示间隔是毫秒 -
SECOND
秒 -
MINUTE
分钟 -
HOUR
小时 -
DAY
天 -
WEEK
星期 -
MONTH
月 -
QUARTER
季度 -
YEAR
年
例如:
计算两日期之间相差多少周
?1 | select timestampdiff(week, '2011-09-30' , '2015-05-04' ); |
计算两日期之间相差多少天
?1 | select timestampdiff( day , '2011-09-30' , '2015-05-04' ); |
另外计算两日期或时间之间相差多少天还可以使用 to_days 函数,但是该函数不用于阳历出现(1582)前的值,原因是当日历改变时,遗失的日期不会被考虑在内。
因此对于1582 年之前的日期(或许在其它地区为下一年 ), 该函数的结果实不可靠的。
具体用法如:
?1 | to_days(end_time) - to_days(start_time); |
计算两日期/时间之间相差的秒数
?1 | select timestampdiff( SECOND , '2011-09-30' , '2015-05-04' ); |
另外还可以使用 MySql 内置函数 UNIX_TIMESTAMP 实现,如下:
?1 | SELECT UNIX_TIMESTAMP(end_time) - UNIX_TIMESTAMP(start_time); |
计算两日期/时间之间相差的时分数
?1 | select timestampdiff( MINUTE , '2011-09-30' , '2015-05-04' ); |
另外还可以如下实现:
?1 | SELECT SEC_TO_TIME(UNIX_TIMESTAMP(end_time) - UNIX_TIMESTAMP(start_time)); |
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/qq_41756580/article/details/84064561
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。