我在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
关于从哪里开始的任何想法?我已经完成了很多阅读,只是为了获得一行中两个日期之间的间隔。谢谢。
答案 0 :(得分:0)
您可以尝试在mysql中使用DATEDIFF()函数
你的回答应该是
SELECT DATEDIFF(Start,End) AS DiffDate from table
你可以参考这个
答案 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