我有一个sql表活动,其中有两个字段名为start\u at,end\u at,每个字段都是datetime列,还有一个airline\u id字段。
让我们把时间间隔称为“结束时间-开始时间”。
我的目标是,对于每一个飞机id,求出某个时间段内每个活动间隔的总和。
基本上,它会像
SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF(ended_at, started_at))))
FROM activity
WHERE started_at > :started_at
AND ended_at < :ended_at
GROUP BY airplane_id
问题是,我的处理周期可能超过了最大时间大小(约838小时),我正在寻找一个有效的解决办法。
在放弃并提取原始数据并用php处理它们之前,我希望一些sql天才可以拯救我。
致以最诚挚的问候,
3条答案
按热度按时间6pp0gazn1#
谢谢大家的回答。
正如我所想的,没有办法用纯sql完成我的工作,它需要一些php处理。
所以,我要去做一次大规模的php治疗。
谢谢大家!
2ic8powd2#
你为什么不用
timestampdiff()
?返回一个
integer
,这样你就不用面对time
(但对于integer
当然)你不需要转换成秒,因为你已经可以在几秒钟内得到结果。lbsnaicq3#
把结果表示成分数小时或天数,而不是时间,怎么样?
或:
就我个人而言,我认为在如此长的时间间隔内使用时间格式没有多大价值。