如何计算mysql和php中多个日期之间的天数?

时间:2018-04-28 06:51:52

标签: php mysql

我在mysql中有一个包含start_dateend_dateid的表格

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-082018-01-08应该是一天。 2018-01-082018-01-09应该是2天但不是1天。 请帮忙。 程序正在开发中。

4 个答案:

答案 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代码计算了几天。我对所有日期进行对齐排序,然后计算每个日期之间的天数。 感谢所有回答我问题的人。