创建mysql日期范围

时间:2011-01-19 14:55:49

标签: mysql date

似乎找不到我要找的答案。

我想在表格中创建2010-11-01至2015-01-01的日期范围。

2010-11-01 2010-11-02 2010-11-03 等...

列数据类型为“日期”

由于

3 个答案:

答案 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