Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql多个日期时间之和存在问题_Mysql_Datetime_Timestamp_Sum - Fatal编程技术网

mysql多个日期时间之和存在问题

mysql多个日期时间之和存在问题,mysql,datetime,timestamp,sum,Mysql,Datetime,Timestamp,Sum,在我的数据库中,时间存储为“datetimes”(我不知道这是否是问题所在-我尝试了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 我试

在我的数据库中,时间存储为“datetimes”(我不知道这是否是问题所在-我尝试了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。查询有什么问题?

您不能对日期时间值求和-您需要先转换为秒数

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

您需要使用
TIME\u to_SEC
函数将
TIMEDIFF
转换为秒,以正确获得秒为单位的总和:

$times = mysql_query("SELECT SUM(TIME_TO_SEC(TIMEDIFF(end_date, start_date)))
         AS timesum FROM schedules")
如果不使用
TIME\u to_SEC
显式转换为秒,
SUM
函数将
TIMEDIFF
视为浮点数。在第一排试一试,看看我的意思:

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

$times = 34500.000000

100500
是将所有计划记录相加的总数:。此外,每个明细表的值分别为
34500
53000
13000
。您从哪里获得
38700
?我只是在屏幕上重复了一下,数值是正确的。Schu_id是表格中的另一个字段,我只是想让这篇文章保持简单。哦,我几秒钟就搞定了。下面曼苏克的回答解决了这个问题。非常感谢。