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

wz1wpwve  于 2021-06-21  发布在  Mysql
关注(0)|答案(4)|浏览(411)

我在mysql中有一个包含 start_date , end_date 以及 id 这样地

  1. start_date end_date id
  2. ---------------------------------------------
  3. 2018-01-01 2018-01-01 5
  4. 2018-01-03 2018-01-03 5
  5. 2018-01-03 2018-01-08 5
  6. 2018-01-06 2018-01-07 7
  7. 2018-01-07 2018-01-07 7
  8. 2018-01-09 2018-01-11 7
  9. 2018-01-02 2018-01-02 8
  10. 2018-01-02 2018-01-04 8
  11. 2018-01-08 2018-01-08 9

我想要在mysql中输出id-like的总天数。

  1. total_days id
  2. -------------------------
  3. 7 5
  4. 5 7
  5. 3 8
  6. 1 9

特定ID的日期之间有一天的间隔。请检查每个id的开始和结束日期。我认为需要将所有日期放在一个序列中,然后计算从第一天到下一天的天数。我不知道怎么做。 2018-01-082018-01-08 应该有一天。 2018-01-082018-01-09 应该是2天,但不是1天。请帮忙。程序正在用php开发。。

jexiocij

jexiocij1#

datediff函数在输出中支持减号和加号:

  1. SELECT DATEDIFF(start_date, end_date) + 1
8wtpewkr

8wtpewkr2#

选择distinct id,从表\u name中将(开始\u日期-结束\u日期)计数为“总计\u天”

waxmsbnn

waxmsbnn3#

我发现在硬核mysql中这是不可能的。我需要使用编程语言。因为我用php开发软件,所以我用php代码计算了天数。我对所有日期逐个排序,然后计算每个日期之间的天数。谢谢所有回答我问题的人。

6ju8rftf

6ju8rftf4#

您正在查找datediff函数:
ms sql服务器:

  1. SELECT id, sum(DATEDIFF(day, startdate, enddate) +1) FROM table group by id;

mysql数据库:

  1. SELECT id, DATEDIFF(max(enddate), min(startdate)) + 1 FROM demo group by id;

演示小提琴:演示
datediff文档ms sql server:ms sql server datediff
datediff文档mysql:mysql datediff

相关问题