2011-10-12 54 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