似乎找不到我要找的答案。
我想在表格中创建2010-11-01至2015-01-01的日期范围。
2010-11-01 2010-11-02 2010-11-03 等...
列数据类型为“日期”
由于
答案 0 :(得分:11)
DROP PROCEDURE IF EXISTS datespopulate;
DELIMITER |
CREATE PROCEDURE datespopulate(dateStart DATE, dateEnd DATE)
BEGIN
WHILE dateStart <= dateEnd DO
INSERT INTO datetable (d) VALUES (dateStart);
SET dateStart = date_add(dateStart, INTERVAL 1 DAY);
END WHILE;
END;
|
DELIMITER ;
CALL datespopulate('2010-11-01','2015-01-01');
注意我将我的表命名为“datetable
”,该列名为“d
”,但随时可以更改此名称。我的工作正常,如果你遇到问题,请告诉我。
感谢Joe让球滚动。 ; - )
答案 1 :(得分:1)
你当然可以采取蛮力方法。
set @d = cast('2010-11-01' as date);
while (@d < '2015-01-02') do
insert into YourTable
(YourColumn)
values
(@d);
set @d = date_add(@d, interval 1 day);
end while;
答案 2 :(得分:0)
意识到这是一个旧线程 - 但是,我发现它很有用,并且建议在Brad的程序中添加SET AUTOCOMMIT = 0。这将严重提高性能(在我的系统上;从2小时到4秒)。更多信息请见:
http://dev.mysql.com/doc/refman/5.5/en/optimizing-innodb-transaction-management.html