Mysql 间隔日期从两行开始

Mysql 间隔日期从两行开始,mysql,sql,Mysql,Sql,我在MySQL上的日期示例数据如下表所示: Start End Source ===== === ==== 2017-01-01 2017-02-14 T 2017-02-17 2017-02-28 T 2017-03-10 2017-03-15 T 我想要从结束日期到开始日期的间隔日期。例如: (2017-02-17) - 2017-02-14) = 3 days or (2017-03-10)-(2017-02-28)

我在MySQL上的日期示例数据如下表所示:

Start       End         Source
=====       ===         ====
2017-01-01  2017-02-14  T
2017-02-17  2017-02-28  T
2017-03-10  2017-03-15  T 
我想要从结束日期到开始日期的间隔日期。例如:

 (2017-02-17) - 2017-02-14) = 3 days or (2017-03-10)-(2017-02-28) = 10 days

关于从哪里开始有什么想法吗?我读了很多书,只是为了把两次约会的时间间隔排在一行。谢谢。

您可以尝试在mysql中使用DATEDIFF()函数

你的答案应该是

SELECT DATEDIFF(Start,End) AS DiffDate from table
你可以参考这个


我想他想得到第1行的enddate和第2行的startdate之间的差异,依此类推。 你有另一个标识符吗?所以我认为您可能需要一个“左连接”或一个子查询来处理这个问题

SELECT a.id, a.start, a.end, b.start, b.end, b.start - a.end AS `DIFF`
FROM table1 a
INNER JOIN table1 b ON b.id = a.id -1 
所以一行中有两个结果,可以像一行一样使用diff和intervall


我希望这个想法能帮助您朝着正确的方向前进

您想要实现的是找到同一表格中两个连续行之间的时间差

你可以这样做:

SELECT t1.ID, t1.Start, t1.End, 
       datediff(max(t2.End ), t1.Start) as minutes
FROM t as t1 LETF JOIN t as t2 on t1.ID = t2.ID 
       and t2.End < t1.Start
GROUP BY t1.ID, t1.Start, t1.End 
选择t1.ID,t1.Start,t1.End,
datediff(最大值(t2.End),t1.Start)为分钟
从t作为t1 LETF连接t作为t1.ID=t2.ID上的t2
t2.结束
您只需使用
join
计算这些日期即可

select concat(datediff(n1.start,n2.end),' ',repeat('days',1)) as days 
from table_name n1 
join table_name n2 
on n2.end < n1.start;
选择concat(datediff(n1.开始,n2.结束),“”,重复('days',1))作为天数
来自表_name n1
联接表\u名称n2
在n2.end
看这里

如果您不需要重复“天”,请使用此查询

select datediff(n1.start,n2.end) 
from your_table n1 
join your_table n2 
on n2.end < n1.start;
选择datediff(n1.开始,n2.结束)
从您的表n1
加入你的表格n2
在n2.end
试试这个查询,告诉我它是否有效

SET @dateDiff=NULL;SET @dateDiff2='';
SELECT diff.dateDiffR AS dateDifference FROM (
SELECT aa.`end`,aa.`start`,IF(@dateDiff IS NULL,@dateDiff:=aa.end,0) AS try,
DATEDIFF(aa.`start`,@dateDiff) AS dateDiffR,
IF(@dateDiff!=@dateDiff2,@dateDiff2:=@dateDiff,0) AS try1,
IF(DATE(@dateDiff)!=DATE(aa.end),@dateDiff:=aa.end,NULL) AS assign 
FROM test.`dateCheck` aa ) diff WHERE diff.dateDiffR>0

嘿,你最好用“左连接”。因为否则你就没有第一行的结果,因为当你的第一个id是1“ON b.id=a.id-1”时。这只在前一个期间的id比你比较的id正好少一个时才有效。这是trtue,但如果不是这样,他可以向我们展示结构,我们可以优化查询。这只是第一个想法。让我们集思广益^^datediff只需要两个参数。您使用了3个参数?@Krishnakumar
datediff
需要3个参数。嗨,在MySQL只有2 >请考虑选择正确的答案。