How to populate a table with a range of dates?

后端 未结 10 1488
夕颜
夕颜 2020-11-22 04:24

I need a MySQL table to hold ALL DATES between 2011-01-01 and 2011-12-31. I have created a table with one column names \"_date\", type DATE.

With what query can I po

10条回答
  •  醉酒成梦
    2020-11-22 05:08

    I found this paste-and-go variant working:

    DROP PROCEDURE IF EXISTS FillCalendar;
    DROP TABLE IF EXISTS calendar;
    CREATE TABLE IF NOT EXISTS calendar(calendar_date DATE NOT NULL PRIMARY KEY);
    
    DELIMITER $$
        CREATE PROCEDURE FillCalendar(start_date DATE, end_date DATE)
        BEGIN
        DECLARE crt_date DATE;
        SET crt_date = start_date;
        WHILE crt_date <= end_date DO
            INSERT IGNORE INTO calendar VALUES(crt_date);
            SET crt_date = ADDDATE(crt_date, INTERVAL 1 DAY);
        END WHILE;
        END$$
    DELIMITER ;
    
    CALL FillCalendar('2013-01-01', '2013-01-03');
    CALL FillCalendar('2013-01-01', '2013-01-07');
    

提交回复
热议问题