计算MySQL中两个日期项之间的差异
考虑到不同记录中的不同日期范围,我试图计算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
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。我来试试这个!谢谢你的帮助,对不起,我不擅长解释问题。熟能生巧,努力尝试往往会得到回报。