2011-01-19 136 views
6

似乎无法找到我正在寻找的答案。创建mysql日期范围

我想在表中创建一个从2010-11-01到2015-01-01的日期范围。

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

列数据类型是 '日期'

感谢

+0

请参阅我发布的答案。 – 2011-01-19 15:56:37

+0

这是可能的,没有使用过程,这里看到 http://stackoverflow.com/questions/2157282/generate-days-from-date-range – mathheadinclouds 2014-11-28 05:59:56

回答

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”,但随意改变这一点。在我的最后工作正常,让我知道你是否遇到问题。

乔为了让球滚动的荣誉。 ;-)

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; 
+0

@Joe:`DECLARE只允许在一个BEGIN ... END复合语句和必须在开始之前,在任何其他陈述之前。 `(每[DECLARE语法](http://dev.mysql.com/doc/refman/5.0/en/declare.html) - 认为它需要一个过程,尽管你在正确的轨道上) – 2011-01-19 15:21:34