MySQL:将日期范围扩展为新行

fog*_*rit 4 mysql sql

我在 MySQL 中有一个表,其中包含每个键的最小和最大日期值:

key |   minDate   |   maxDate
 1     2011-01-01   2011-01-10 
 2     2011-02-13   2011-02-15
 3     2011-10-19   2011-12-10
Run Code Online (Sandbox Code Playgroud)

如何为每个键的 minDate 和 maxDate 之间的每个日期创建一个包含一行的新表:

key |     Date   
 1     2011-01-01
 1     2011-01-02
 ...     ...
 1     2011-01-10
 2     2011-02-13
 2     2011-02-14
 2     2011-02-15
 3     2011-10-19
 ...     ...
Run Code Online (Sandbox Code Playgroud)

pil*_*row 6

使用整数表,您可以执行以下操作:

    SELECT "key", minDate + INTERVAL i DAY
      FROM mytable
INNER JOIN integers
           ON i <= DATEDIFF(maxDate, minDate)
Run Code Online (Sandbox Code Playgroud)

当然,假设“整数”表的列名为“i”。

从那里你可以用INSERT INTO ... SELECT.