列出某些时段内的所有日期

3phpmpom  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(289)

**结束。**此问题需要详细的调试信息。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

两年前关门了。
改进这个问题
我有下表中的项目及其活动周期(周期定义为开始和结束日期):

ID | ProjID | ActiveFrom | ActiveTo
===+========+============+============
 1 |     20 | 2018-01-01 | 2018-01-04
 2 |     20 | 2018-02-05 | 2018-02-07
 3 |     20 | 2018-02-20 | 2018-02-22
 4 |     30 | 2018-01-15 | 2018-02-15

一个项目有任意数量的活动周期。
我需要一个查询,将返回一个给定的项目的所有活动日期。例如,对于projid=20,结果应为:

2018-01-01
2018-01-02
2018-01-03
2018-01-04
2018-02-05
2018-02-06
2018-02-07
2018-02-20
2018-02-21
2018-02-22
jutyujz0

jutyujz01#

你的意思是这样的:

SET @row_number = 0;
SELECT DATE_ADD(DATE_ADD(ActiveFrom, INTERVAL -1 DAY), INTERVAL x.D DAY) AS ActivityPeriods
FROM test
LEFT JOIN(SELECT *, (@row_number:=@row_number + 1) AS D  FROM information_schema.COLUMNS) AS x ON x.D <= DATEDIFF(ActiveTo,ActiveFrom) +1
WHERE 
    ProjID = 20
   ORDER BY ActivityPeriods

这会给你:

| ActivityPeriods |
| --------------- |
| 2018-01-01      |
| 2018-01-02      |
| 2018-01-03      |
| 2018-01-04      |
| 2018-02-05      |
| 2018-02-06      |
| 2018-02-07      |
| 2018-02-20      |
| 2018-02-21      |
| 2018-02-22      |

小提琴演示

相关问题