2009-10-05 92 views
1

我有一張MySQL表,看起來像這樣。這基本上是任務的時間表。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中的不同日期函數,我認爲很難通過它們的文檔來閱讀和導航。

回答

3

這不是THAT difficult來瀏覽MySQL文檔。

您需要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()

+0

這對我不起作用:/ –

+0

對不起,我錯過了「+ INVERVAL 1 DAY」的地方。編輯。 – ChssPly76

1
SELECT 'TODAY' Date, SUM(TIME_TO_SEC(TIME_DIFF(stop - start))) TimeSpent 
FROM table1 
WHERE start >= CURDATE() 
    AND stop < CURDATE() + INTERVAL 1 DAY