2011-01-19 44 views
6

私が探している答えを見つけることができないようです。mysqlの日付範囲を作成

2010-11-01から2015-01-01までの日付範囲をテーブルに作成したいと考えています。など

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

列のデータ型は、 '日付'

おかげ

+0

私が投稿した回答をご覧ください。 –

+0

プロシージャを使用しなくても可能です。こちらを参照してください。 http://stackoverflow.com/questions/2157282/generate-days-from-date-range – mathheadinclouds

答えて

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」と命名されていますが、これを変更して自由に感じます。私の終わりにうまく動作します。問題に就いたら、教えてください。

ボールを転がすためのジョーへの栄誉。 ;-)

+0

+1:ありがとうございました。 –

+0

@Joe:問題ありません。喜んで助けてください! ;-) –

+0

ヘルプガイズありがとう。 – mrlayance

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) - 手続きが必要だと思いますが、正しい軌道に乗っています) –

+0

@ブラッド:ありがとう。編集された答え。 –

+0

@ Joe:while条件でも構文エラーが表示されます。これはあなたの目的のために機能しますか? –