计算MySQL中两个日期项之间的差异

计算MySQL中两个日期项之间的差异,mysql,datetime,Mysql,Datetime,考虑到不同记录中的不同日期范围,我试图计算MYSQL中存储的日期间隔天数 下面是一个示例表: tableID User Start_Date End_Date ------- ---- ---------- ---------- 1 111 2015-09-09 2015-09-15 2 111 2015-09-01 2015-09-02 3 111 2015-09-16

考虑到不同记录中的不同日期范围,我试图计算MYSQL中存储的日期间隔天数

下面是一个示例表:

 tableID   User     Start_Date   End_Date
 -------   ----    ----------   ----------
    1      111     2015-09-09   2015-09-15
    2      111     2015-09-01   2015-09-02
    3      111     2015-09-16   2015-09-21
预期结果: 由于表ID 1和表ID 3具有连续的天数,因此结果应为11
我不擅长解释问题,因此如果您没有发现问题,请在下面进行评论。

我可能会先将所有内容复制到临时表中,然后移动不符合
end\u date=start\u date+1
的记录,然后运行其余内容,更新它们,以便所有序列的开始日期和结束日期位于同一记录中

比如说:

临时表1

tableID   User     Start_Date   End_Date
-------   ----    ----------   ----------
   1      111     2015-09-09   2015-09-15
   2      111     2015-09-01   2015-09-02
   3      111     2015-09-16   2015-09-21
   4      111     2015-08-16   2015-08-21
   5      111     2015-07-16   2015-07-21
tableID   User     Start_Date   End_Date
-------   ----    ----------   ----------
   1      111     2015-09-09   2015-09-15
   3      111     2015-09-16   2015-09-21
tableID   User     Start_Date   End_Date
-------   ----    ----------   ----------
   x      111     2015-09-09   2015-09-21
将非顺序记录移动到临时2

临时表1

tableID   User     Start_Date   End_Date
-------   ----    ----------   ----------
   1      111     2015-09-09   2015-09-15
   2      111     2015-09-01   2015-09-02
   3      111     2015-09-16   2015-09-21
   4      111     2015-08-16   2015-08-21
   5      111     2015-07-16   2015-07-21
tableID   User     Start_Date   End_Date
-------   ----    ----------   ----------
   1      111     2015-09-09   2015-09-15
   3      111     2015-09-16   2015-09-21
tableID   User     Start_Date   End_Date
-------   ----    ----------   ----------
   x      111     2015-09-09   2015-09-21
临时表2

tableID   User     Start_Date   End_Date
-------   ----    ----------   ----------
   2      111     2015-09-01   2015-09-02
   4      111     2015-08-16   2015-08-21
   5      111     2015-07-16   2015-07-21
tableID   User     Start_Date   End_Date   Diff
-------   ----    ----------   ---------- ------
   2      111     2015-09-01   2015-09-02    2
   4      111     2015-08-16   2015-08-21    5
   5      111     2015-07-16   2015-07-21    5
   x      111     2015-09-09   2015-09-21   11
合并记录

临时表1

tableID   User     Start_Date   End_Date
-------   ----    ----------   ----------
   1      111     2015-09-09   2015-09-15
   2      111     2015-09-01   2015-09-02
   3      111     2015-09-16   2015-09-21
   4      111     2015-08-16   2015-08-21
   5      111     2015-07-16   2015-07-21
tableID   User     Start_Date   End_Date
-------   ----    ----------   ----------
   1      111     2015-09-09   2015-09-15
   3      111     2015-09-16   2015-09-21
tableID   User     Start_Date   End_Date
-------   ----    ----------   ----------
   x      111     2015-09-09   2015-09-21
将合并记录移动到temp 2并计算差异

临时表2

tableID   User     Start_Date   End_Date
-------   ----    ----------   ----------
   2      111     2015-09-01   2015-09-02
   4      111     2015-08-16   2015-08-21
   5      111     2015-07-16   2015-07-21
tableID   User     Start_Date   End_Date   Diff
-------   ----    ----------   ---------- ------
   2      111     2015-09-01   2015-09-02    2
   4      111     2015-08-16   2015-08-21    5
   5      111     2015-07-16   2015-07-21    5
   x      111     2015-09-09   2015-09-21   11

看一看,尝试编写一个程序,如果您遇到问题,请更新您的问题以寻求更多帮助。

添加您尝试过的内容您的问题不清楚如果我们有开始日期2015-09-22和结束日期2015-09-30这样的记录会怎么样?您正在谈论的是连续几天?你能更详细地解释一下吗?连续几天,如表中所示,表ID 1的结束日期为2015-09-15,表ID 3的开始日期为2015-09-16。我来试试这个!谢谢你的帮助,对不起,我不擅长解释问题。熟能生巧,努力尝试往往会得到回报。