多个日期时间的mysql SUM问题

时间:2011-10-12 15:29:49

标签: mysql datetime timestamp sum

在我的数据库中,时间存储为“日期时间”(我不知道这是不是问题 - 我尝试了datetime和timestamp)。结构如下:

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.查询出了什么问题?

2 个答案:

答案 0 :(得分:8)

您无法对日期时间值求和 - 您需要先转换为秒....

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

答案 1 :(得分:2)

您需要使用TIMEDIFF函数将TIME_TO_SEC转换为秒,以便以秒为单位正确获取总和:

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

如果没有使用TIME_TO_SEC显式转换为秒,SUM函数会将TIMEDIFF视为浮点数。试试你的第一行看看我的意思:

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

应该产生:

$times = 34500.000000