MySQL两表字段相加减,主要是相减,sql语句怎么写
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL两表字段相加减,主要是相减,sql语句怎么写相关的知识,希望对你有一定的参考价值。
参考技术A 按照你的意思,其实就是将两个结果集Union起来,没有值的话即为Null如下:
select
时间,字段2,字段3,null
as
字段4,null
as
字段5
from
a
union
all
select
时间,null
as
字段2,null
as
字段3,字段4,字段5
from
b
解释:因为...
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两表字段相加减,主要是相减,sql语句怎么写的主要内容,如果未能解决你的问题,请参考以下文章