从一天的第一个值减去一天的最后一个值

时间:2019-06-25 21:42:55

标签: mysql

我有一个具有以下结构的MySQL数据库:

Structure overview

以下语句将获取当天的最大值

select a1.*
from powerUsage a1
inner join
(
  select 
    max(timestamp) as max
  from powerUsage 
  group by date(timestamp)
) a2
  on a1.timestamp = a2.max

但是,我需要从当天的第一个值中减去当天的最后一个值。 欢迎任何帮助。 预先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您可以使用TIMESTAMPDIFF SEC_TO_TIME MySQL函数来获得所需的结果。

想法是使用 max min MySQL函数获取当天的最后一个和第一个时间戳值,然后将它们用作TIMESTAMPDIFF函数的参数,告诉函数以秒为单位返回结果:

TIMESTAMPDIFF(SECOND,min(timestamp),max(timestamp))

然后我们将上面的结果用作SEC_TO_TIME函数的参数,以hh:mm:ss的格式获取一天的最后一个时间戳值与第一个时间戳值之间的时间差

SEC_TO_TIME(TIMESTAMPDIFF(SECOND,min(timestamp),max(timestamp)))

以上所有内容都可以通过将原始查询修改为:

select 
a1.*
,a2.delta_time
from
powerUsage a1
inner join
(
  select 
  max(timestamp) as max
  ,SEC_TO_TIME(TIMESTAMPDIFF(SECOND,min(timestamp),max(timestamp))) as delta_time
  from powerUsage 
  group by date(timestamp)
) a2
  on a1.timestamp = a2.max