我有一个具有以下结构的MySQL数据库:
以下语句将获取当天的最大值
select a1.*
from powerUsage a1
inner join
(
select
max(timestamp) as max
from powerUsage
group by date(timestamp)
) a2
on a1.timestamp = a2.max
但是,我需要从当天的第一个值中减去当天的最后一个值。 欢迎任何帮助。 预先感谢您的帮助。
答案 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