Mysql 两个日期字段相减得到秒

Posted 软测小栈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql 两个日期字段相减得到秒相关的知识,希望对你有一定的参考价值。

前言:测试工程师日常,为了验证字段:平均回复时长 显示是否正确,所以需要将2个日期字段进行相减,得出的数据转化为小时,然后看小时落在哪个区间端里边,前端就显示哪个区间端。规则:<=5分钟,显示5分钟内;<=30分钟,显示30分钟内;<=1小时,显示1小时内,依次类推,直到>=24小时,显示未知。


一、初步计算

测试数据如下,需求是:将字段dtm_accept 和字段dtm_crt 两列进行相减,得出的数据累加并除以条数,根据返回的结果,取对应的区间。

SQL语句:

select dtm_accept , dtm_crt, 
TIMESTAMPDIFF(SECOND,dtm_accept,dtm_crt) as aSecond,
TIMESTAMPDIFF(MINUTE,dtm_accept,dtm_crt) as bMinute,
TIMESTAMPDIFF(HOUR,dtm_accept,dtm_crt) as cHour
from test

执行上面的sql语句,得出以下:

Mysql 两个日期字段相减得到秒

手动将aSecond这一列,相加 并换算为小时数,最后的结果=小时数/6(条数)

179740 秒=49.9277778 时

49.93/6=8.32 所以显示的区间数应该是:9小时内

二、进一步优化:

select 
dtm_accept ,
dtm_crt,
TIMESTAMPDIFF(SECOND,dtm_accept,dtm_crt) as aSecond,
TIMESTAMPDIFF(MINUTE,dtm_accept,dtm_crt) as bMinute,
TIMESTAMPDIFF(HOUR,dtm_accept,dtm_crt) as cHour
from test
union ALL
select
' ' ,
'合计',
SUM(TIMESTAMPDIFF(SECOND,dtm_accept,dtm_crt)) ,
SUM(TIMESTAMPDIFF(MINUTE,dtm_accept,dtm_crt)) ,
SUM(TIMESTAMPDIFF(HOUR,dtm_accept,dtm_crt) )
from test

通过sql语句,直接计算出毫秒数,转成小时在除以6 ,

49.93/6=8.32 所以显示的区间数应该是:9小时内


三、扩展:将带毫秒的时间格式化为不带毫秒的时间

select dtm_upt,DATE_FORMAT(dtm_upt,"%Y-%m-%d %H:%i:%S") from test


以上是关于Mysql 两个日期字段相减得到秒的主要内容,如果未能解决你的问题,请参考以下文章

oracle把查两个日期相减的天数变成数字类型

hive里面怎么把两个时间点相减 然后求出相隔多少秒?比如2015-05-01 12:02:03和

oracle中怎么得到日期相减除去周末后的天数

mysql两个日期计算天数

mysql 中,计算2个datetime类型的字段,相减得到的分钟数

java 时间类型相减(Timestamp) 得到秒