3 ответов:
Обратите внимание, что я назвал свою таблицу "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;
Понимаю, что это старый поток-однако, я нашел его полезным и хотел бы предложить добавить SET AUTOCOMMIT=0 в процедуру Брэда. Это серьезно увеличит производительность (на моей системе; от 2 часов до 4 секунд). Более подробная информация находится здесь:
Http://dev.mysql.com/doc/refman/5.5/en/optimizing-innodb-transaction-management.html
Comments