我有一个看起来像这样的MySQL表。它基本上是任务的时间表。
id | task | user | start | stop | running
------+--------+--------+-----------------------+-----------------------+-----------
1 | 12 | 2 | 2009-10-01 10:05:00 | 2009-10-01 14:23:00 | 0
1 | 13 | 4 | 2009-10-05 08:58:00 | 2009-10-05 12:16:00 | 0
1 | 14 | 3 | 2009-10-05 20:30:00 | 2009-10-05 22:00:00 | 0
我想总结花费的时间:
1)今天 2)昨天 3)本周 4)上周 5)这个月 6)上个月
我不需要每个人的查询,但只是第一个让我开始。我不熟悉MySQL中的不同日期函数,我认为很难阅读和浏览他们的文档..
答案 0 :(得分:3)
浏览MySQL文档并不是THAT difficult。
您需要TIMEDIFF()和TIME_TO_SEC
个功能。
select SUM(TIME_TO_SEC(TIMEDIFF(stop, start))) from my_table
where start >= CURRENT_DATE() and stop <= CURRENT_DATE() + INTERVAL 1 DAY
将为您提供今天花在任务上的总时间(以秒为单位)。如果您要在MySQL中指定其他范围的标准(例如上个月等)而不是将它们作为参数提供给您的查询,请查看DATE_SUB()
。
答案 1 :(得分:1)
SELECT 'TODAY' Date, SUM(TIME_TO_SEC(TIME_DIFF(stop - start))) TimeSpent
FROM table1
WHERE start >= CURDATE()
AND stop < CURDATE() + INTERVAL 1 DAY