在我的数据库中,时间存储为“日期时间”(我不知道这是不是问题 - 我尝试了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.查询出了什么问题?
答案 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