我在mysql中有一个包含start_date
,end_date
和id
的表格
start_date end_date id
---------------------------------------------
2018-01-01 2018-01-01 5
2018-01-03 2018-01-03 5
2018-01-03 2018-01-08 5
2018-01-06 2018-01-07 7
2018-01-07 2018-01-07 7
2018-01-09 2018-01-11 7
2018-01-02 2018-01-02 8
2018-01-02 2018-01-04 8
2018-01-08 2018-01-08 9
我想在mysql中输出id的总天数。
total_days id
-------------------------
7 5
5 7
3 8
1 9
特定ID的日期之间存在天差距。请检查每个ID的开始和结束日期。我认为需要将所有日期放在一个序列中,然后计算从第一个到下一个的天数。我不知道该怎么做。 2018-01-08
到2018-01-08
应该是一天。 2018-01-08
到2018-01-09
应该是2天但不是1天。
请帮忙。
程序正在开发中。
答案 0 :(得分:1)
您正在寻找DATEDIFF功能:
MS SQL SERVER:
SELECT id, sum(DATEDIFF(day, startdate, enddate) +1) FROM table group by id;
MYSQL:
SELECT id, DATEDIFF(max(enddate), min(startdate)) + 1 FROM demo group by id;
演示小提琴:DEMO
Datediff文档MS SQL Server:MS SQL SERVER Datediff
Datediff文档MYSQL:MYSQL Datediff
答案 1 :(得分:0)
DateDiff函数支持输出中的减号和加号:
SELECT DATEDIFF(start_date, end_date) + 1
答案 2 :(得分:0)
选择不同的ID,计数(start_date-end_date)为" total_days"来自table_name
答案 3 :(得分:0)
我找到了解决方案,它在硬核mysql中是不可能的。我需要使用编程语言。当我使用PHP开发我的软件时,所以我使用PHP代码计算了几天。我对所有日期进行对齐排序,然后计算每个日期之间的天数。 感谢所有回答我问题的人。