我有一個包含在這種格式的日期 - 時間值的表:MySQL - 如何SUM時間?
START
2009年1月13日上午七點00分00秒
END
1/13/2008 2:57:00 PM
我使用'str to date'函數將它們轉換爲日期時間格式。
我該如何計算它們之間的差異? 然後總結它,以便它顯示總小時數(即一週的總小時數爲40:53)。
我正在嘗試timediff函數,但結果不總和。
我有一個包含在這種格式的日期 - 時間值的表:MySQL - 如何SUM時間?
START
2009年1月13日上午七點00分00秒
END
1/13/2008 2:57:00 PM
我使用'str to date'函數將它們轉換爲日期時間格式。
我該如何計算它們之間的差異? 然後總結它,以便它顯示總小時數(即一週的總小時數爲40:53)。
我正在嘗試timediff函數,但結果不總和。
試着看UNIX_TIMESTAMP
和SEC_TO_TIME
。
你會總結時間戳之間的差異,然後使用該值(會以毫秒爲單位)來獲取時間:
SELECT SEC_TO_TIME(time_milis/1000)
FROM (
SELECT SUM(UNIX_TIMESTAMP(date1) - UNIX_TIMESTAMP(date2)) as time_milis
FROM table
)
SELECT SUM(DATEDIFF(endtime, starttime))
FROM somerecordstable
WHERE starttime > '[some date]' AND endtime <= '[some date]'
您也可以嘗試:
SELECT SUM(TIMEDIFF(endtime, starttime))
FROM somerecordstable
WHERE starttime > '[some date]' AND endtime <= '[some date]'
我沒有測試過第二個,但我第一個知道應該工作。
這是正確的想法,而且還會讓你在天一個答案。您需要進行一些乘法運算或使用其他日期函數將其轉換爲小時:分鐘 – 2009-08-25 16:53:56
謝謝 - 它肯定需要幾小時,因爲查詢需要查找給定周內員工的總工作時間。 – 2009-08-25 17:22:47
我給出的第二個例子應該給你正確的答案 – Jason 2009-08-25 17:29:30
SELECT some_grouping_column, SUM(TIMEDIFF(datecol1,datecol2)) as tot_time
FROM my_table
GROUP BY some_grouping_column;
結果是在幾分鐘內返回的嗎? – 2009-08-25 17:23:24
它返回hh:mm:ss http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_timediff – dnagirl 2009-08-25 17:58:31
使用TIMEDIFF()
。
SUM(TIMEDIFF(end, start))
我認爲你必須使用此代碼...它的工作原理:)
SELECT
SEC_TO_TIME(SUM(TIME_TO_SEC(`time`))) AS total_time
FROM time_table;
當我在MySQL中完成這項工作時,我必須創建一個tmp表(帶有子查詢),因爲LIMIT不會起作用,否則:從選擇TIME_TO_SEC(TIMEDIFF(end_time,start_time))秒選擇sec_to_time(sum(secs))secs從預訂訂單通過ID desc limit 10)t;'奇怪。 – Rudie 2013-02-27 01:12:39
謝謝 - 我將日期時間字符串轉換爲秒 - 計算差異 - 然後將秒數轉換回小時 - 分鐘。 – 2009-08-25 17:25:29
更正 - time_to_sec函數不適用於日期部分 - 只有時間部分 - 所以採取2009-08-25 01:06:00減去2009-08-24 15:35:00結果爲負數。 我將需要使用timediff函數。 – 2009-08-25 17:57:38