似乎无法找到我正在寻找的答案。创建mysql日期范围
我想在表中创建一个从2010-11-01到2015-01-01的日期范围。
2010-11-01 2010-11-02 2010-11-03 等等
列数据类型是 '日期'
感谢
似乎无法找到我正在寻找的答案。创建mysql日期范围
我想在表中创建一个从2010-11-01到2015-01-01的日期范围。
2010-11-01 2010-11-02 2010-11-03 等等
列数据类型是 '日期'
感谢
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
”,但随意改变这一点。在我的最后工作正常,让我知道你是否遇到问题。
乔为了让球滚动的荣誉。 ;-)
你当然可以采取蛮力方法。
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;
@Joe:`DECLARE只允许在一个BEGIN ... END复合语句和必须在开始之前,在任何其他陈述之前。 `(每[DECLARE语法](http://dev.mysql.com/doc/refman/5.0/en/declare.html) - 认为它需要一个过程,尽管你在正确的轨道上) – 2011-01-19 15:21:34
认识到这是一个旧的线程 - 但是,我发现它很有用,并且想要向Brad的程序添加SET AUTOCOMMIT = 0。这会严重增加性能(在我的系统上,从2小时到4秒)。更多的信息在这里找到:
http://dev.mysql.com/doc/refman/5.5/en/optimizing-innodb-transaction-management.html
请参阅我发布的答案。 – 2011-01-19 15:56:37
这是可能的,没有使用过程,这里看到 http://stackoverflow.com/questions/2157282/generate-days-from-date-range – mathheadinclouds 2014-11-28 05:59:56