Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.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 给定启动日期(y/m/d)和截止日期(y/m/d)列,如何在SQL上编写duration命令?_Mysql_Sql - Fatal编程技术网

Mysql 给定启动日期(y/m/d)和截止日期(y/m/d)列,如何在SQL上编写duration命令?

Mysql 给定启动日期(y/m/d)和截止日期(y/m/d)列,如何在SQL上编写duration命令?,mysql,sql,Mysql,Sql,我对SQL非常陌生,所以很抱歉我提出了一个noob问题 我得到了一张要分析的表格,我想在我制作的一个名为“持续时间”的新专栏中找到所有启动日期和截止日期之间经过的天数。然后我想找出那些日子的平均值。我会为此写什么命令 -------------- 启动|截止日期|持续时间| --------------- 平均|平均|平均 这就是我想做/找到的。我不知道如何开始/写它 使用datediff select datelaunched, deadline, datediff(day, datelaun

我对SQL非常陌生,所以很抱歉我提出了一个noob问题

我得到了一张要分析的表格,我想在我制作的一个名为“持续时间”的新专栏中找到所有启动日期和截止日期之间经过的天数。然后我想找出那些日子的平均值。我会为此写什么命令

--------------

启动|截止日期|持续时间|

---------------

平均|平均|平均

这就是我想做/找到的。我不知道如何开始/写它

使用datediff

select datelaunched, deadline, datediff(day, datelaunched, deadline)
union all
select avg(datelaunched), avg(deadline), avg(datediff(day, datelaunched, deadline))

我推测你想要这样的东西:

select avg(timestampdiff(day, datelaunched, deadlined)) as avg_dur_days
from t;

所以有一个截止日期和一个实际的发射日期,可以在截止日期之前或之后?然而,你不想知道截止日期的完成与否,你只想知道两者之间的平均天数?因此,两个项目(?)提前一周完成,一个延迟两周完成,你想显示数字0吗?请看下面的答案-这对你有用吗?我认为你需要提供样本数据和期望的结果。顺便说一下,你不应该在表中存储冗余数据。你所谓的持续时间似乎只是两个日期之间的差异。您总是可以从现有列中检索到这一点。通过示例数据和预期输出的示例,可以更清楚地说明规范。我有点理解答案。但是,对MySQL语法不正确的答案进行一次向上投票是很奇怪的。我很好奇对日期值取一个“平均值”。。。是否将日期强制转换为数字YYYYMMDD,取数值的平均值,并返回可能不是有效日期的十进制值?为什么?(DATEDIFF函数接受两个参数,我们是否打算使用TIMESTAMPDIFF?)