获得当前时间和另一时间的时间差

select timestampdiff(second,(select last_locationtime from municipal_employee where employee_id=9),now()) as difftime;

mysql的

timestampdiff(second,starttime,endtime)

函数获得时间差,得到的可以是day/天,hour/小时,minute/分钟,second/秒。

其中starttime为时间小的那个时间,endtime为时间大的时间。

now()函数为获取当前日期时间

mysql最全的计算时间差

计算两日期时间之间相差的天数,秒数,分钟数,周数,小时数,这里主要分享的是通过mysql内置的函数 timestampdiff() 实现。

函数 timestampdiff() 是mysql本身提供的可以计算两个时间间隔的函数,语法为:

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   年

例如:

计算两日期之间相差多少周

select timestampdiff(week,'2011-09-30','2015-05-04');

计算两日期之间相差多少天

select timestampdiff(day,'2011-09-30','2015-05-04');

另外计算两日期或时间之间相差多少天还可以使用 to_days 函数,但是该函数不用于阳历出现(1582)前的值,原因是当日历改变时,遗失的日期不会被考虑在内。

因此对于1582 年之前的日期(或许在其它地区为下一年 ), 该函数的结果实不可靠的。

具体用法如:

to_days(end_time) - to_days(start_time);

计算两日期/时间之间相差的秒数

select timestampdiff(second,'2011-09-30','2015-05-04');

另外还可以使用 mysql 内置函数 unix_timestamp 实现,如下:

select unix_timestamp(end_time) - unix_timestamp(start_time);

计算两日期/时间之间相差的时分数

select timestampdiff(minute,'2011-09-30','2015-05-04');

另外还可以如下实现:

select sec_to_time(unix_timestamp(end_time) - unix_timestamp(start_time));

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。