2011-10-12 27 views
3

在我的數據庫中,時間存儲爲「日期時間」(我不知道這是否是問題 - 我嘗試了日期時間和時間戳)。結構看起來像:與多個日期時間的MySQL的麻煩

ID | START_DATE   | END_DATE 
1 | 2011-10-10 08:15:00 | 2011-10-10 12:00:00 
2 | 2011-10-11 09:00:00 | 2011-10-11 14:30:00 
3 | 2011-10-12 08:45:00 | 2011-10-12 10:15:00 

我想獲得所有開始和結束時間之間的總秒數的總和。下面是我有:

$times = mysql_query("SELECT SUM(TIMEDIFF(end_date, start_date)) 
AS timesum FROM schedules"); 

$timetotal = mysql_fetch_assoc($times); 

echo $timetotal['timesum']; 

現在,總和應該是38700,但是當我運行上面的查詢,它將返回100500.這有什麼錯查詢?

+0

'100500'是將所有的日程記錄在一起總:HTTP:// WWW。 sqlize.com/91Ypqt7Ylf。另外,每個時間表的值分別是'34500','53000'和'13000'。你從哪裏得到'38700'? http://www.sqlize.com/5IlL9a9cOa – mellamokb

+0

我只是將它回顯到屏幕上,並且該值是正確的。 sch_id是表格中的另一個字段,我只是試圖簡化這篇文章。 – Oseer

+0

哦,我已經在幾秒鐘內。 ManseUK的答案解決了這個問題。謝謝。 – Oseer

回答

8

你不能總結datetime值 - 你需要轉換成秒第一....

SELECT SUm(time_to_sec(TIMEDIFF(end_date, start_date))) 
AS timesum FROM schedules 
+0

謝謝你做到了。 – Oseer

+0

+1事實上,你是正確的:http://www.sqlize.com/G1lb3L6YdW – mellamokb

+0

第一次我看到http://www.sqlize.com/ - 一個偉大的網站! – ManseUK

2

您需要將您的TIMEDIFF轉換爲使用TIME_TO_SEC功能來正確獲得秒爲單位的總和秒:

$times = mysql_query("SELECT SUM(TIME_TO_SEC(TIMEDIFF(end_date, start_date))) 
     AS timesum FROM schedules") 

在不明確地轉換爲秒TIME_TO_SECSUM函數將一個TIMEDIFF爲浮點數。給它在你的第一行一試,看看我的意思:

$times = mysql_query("SELECT SUM(TIMEDIFF(end_date, start_date)) 
     AS timesum FROM schedules WHERE ID='1'") 

應該產生:

$times = 34500.000000