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语句,得出以下:

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两表字段相加减,主要是相减,sql语句怎么写的主要内容,如果未能解决你的问题,请参考以下文章

SqlServer数据库要求按照两数相减结果的绝对值正序排列怎么写sql语句?

java 中 日期怎么相加减

sql时间加减

OpenCV图像处理一图像相加相减相乘与相除的实现

mysql里怎么能让插入的数据自动相加减呢?

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