我在 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)
使用整数表,您可以执行以下操作:
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.