Создать mysql диапазон дат - PullRequest
6 голосов
/ 19 января 2011

Не могу найти ответ, который ищу.

Я хочу создать диапазон дат с 2010-11-01 по 2015-01-01 в таблице.

2010-11-01 2010-11-02 2010-11-03 и т.д ...

Тип данных столбца: «Дата»

Спасибо

Ответы [ 3 ]

11 голосов
/ 19 января 2011
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 голос
/ 19 января 2011

Вы, конечно, можете использовать метод грубой силы.

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 голосов
/ 22 марта 2013

Поймите, что это старый поток. Однако я нашел его полезным и хотел бы предложить добавить SET AUTOCOMMIT = 0 в процедуру Брэда. Это серьезно повысит производительность (в моей системе; с 2 часов до 4 секунд). Более подробная информация находится здесь:

http://dev.mysql.com/doc/refman/5.5/en/optimizing-innodb-transaction-management.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...