mysql:两个时间相减,得出这种格式的时间 '2年240天17小时56分2秒'能用sql写出来吗 ?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql:两个时间相减,得出这种格式的时间 '2年240天17小时56分2秒'能用sql写出来吗 ?相关的知识,希望对你有一定的参考价值。
declare @str intset @str=datediff(second,'2016-01-01','2017-08-01 08:12:30') --日期时间差
select cast(@str/(86400*365) as char)+'年'
select cast(@str/86400%365 as char)+'天'
select cast(@str/3600%24 as char)+'时'
select cast(@str/60%60 as char)+'分'
select cast(@str%60 as char)+'秒'
你自己修改下 然后字符串链接就能得出结果
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语句,得出以下:
手动将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:两个时间相减,得出这种格式的时间 '2年240天17小时56分2秒'能用sql写出来吗 ?的主要内容,如果未能解决你的问题,请参考以下文章
mysql两个时间(我有两个字段是datetime类型)相减返回两个时间的小时差,精确到小数点后两位应该怎么写
2道acm简单题(2013):1.(时分秒)时间相减;2.主持人和N-1个人玩游戏,每个人说出自己认识的人数,判断其中是否有人说谎。