Создать диапазон дат mysql



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



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



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



Тип данных столбца - "дата"



Спасибо

675   3  

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

    Ничего не найдено.