间隔日期来自两行MySQL

时间:2017-02-20 07:47:17

标签: 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) = 10 days

关于从哪里开始的任何想法?我已经完成了很多阅读,只是为了获得一行中两个日期之间的间隔。谢谢。

5 个答案:

答案 0 :(得分:0)

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

你的回答应该是

SELECT DATEDIFF(Start,End) AS DiffDate from table

你可以参考这个

https://www.w3schools.com/sql/func_datediff_mysql.asp

答案 1 :(得分:0)

我认为他希望得到第1行的enddate和第2行的startdate之间的区别,依此类推。 你有另一个标识符?所以我认为你可能需要一个“LEFT JOIN”或子查询来处理这个问题。

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。

我希望这个想法可以帮助你找到正确的方向

答案 2 :(得分:0)

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

你可以这样做:

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 

答案 3 :(得分:0)

您应该只使用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;

demo

如果你不需要重复&#34;天&#34;而不是简单地使用这个查询

select datediff(n1.start,n2.end) 
from your_table n1 
join your_table n2 
on n2.end < n1.start;

答案 4 :(得分:0)

尝试查询,让我知道它是否有效?

$(ExecutablePath);$(DXSDK_DIR)Utilities\bin\x86
$(IncludePath);$(DXSDK_DIR)Include
$(LibraryPath);$(DXSDK_DIR)Lib\x86