MySQL:具有start_date和end_date的表:如何为记录的每一天选择一行?

时间:2018-06-13 20:02:59

标签: mysql select

我的一个表确实有一个start_date和end_date,两者都是DATE类型。 通常,它们是相等的,但在某些情况下,end_date大于开始日期。 如果可能的话,我想要实现的是每天返回ROW的SELECT。 所以例如如果start_date是2018-06-28,结束日期是2018-06-30,则SELECT应为此记录返回3行。我最喜欢的方式是更改start_date,如:

+-----------+------------+------------+
| id        | start_date |  end_date  |
+-----------+------------+------------+
|        45 | 2018-06-28 | 2018-06-30 |
|        45 | 2018-06-29 | 2018-06-30 | 
|        45 | 2018-06-30 | 2018-06-30 | 
+-----------+------------+------------+

如果有可能的话,你可以给我一个正确的方向吗?搜索这些并没有带来任何有用的东西。 非常感谢 菲利普

1 个答案:

答案 0 :(得分:0)

最简单的方法是在每个日期添加一个非常基本的“日期”表,然后在dates.date BETWEEN start_date和end_date上加入它。

根据您的MySQL版本,可能还会有更复杂的“公用表表达式”(递归)查询。