Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да попълним таблица с диапазон от дати?

Опитайте това:

DROP PROCEDURE IF EXISTS filldates;
DELIMITER |
CREATE PROCEDURE filldates(dateStart DATE, dateEnd DATE)
BEGIN
  WHILE dateStart <= dateEnd DO
    INSERT INTO tablename (_date) VALUES (dateStart);
    SET dateStart = date_add(dateStart, INTERVAL 1 DAY);
  END WHILE;
END;
|
DELIMITER ;
CALL filldates('2011-01-01','2011-12-31');

Ето SQL Fiddle, за да играете с него:http://sqlfiddle.com/#!2/ 65d13/1

РЕДАКТИРАНЕ (за да проверите дали датата вече съществува), както е поискано от Андрю Фокс .

CREATE PROCEDURE filldates(dateStart DATE, dateEnd DATE)

BEGIN

DECLARE adate date;

    WHILE dateStart <= dateEnd DO

        SET adate = (SELECT mydate FROM MyDates WHERE mydate = dateStart);

        IF adate IS NULL THEN BEGIN

            INSERT INTO MyDates (mydate) VALUES (dateStart);

        END; END IF;

        SET dateStart = date_add(dateStart, INTERVAL 1 DAY);

    END WHILE;

END;//

Ето SQL Fiddle, за да играете с него:http://sqlfiddle.com/#!2/ 66f86/1



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да добавите ненулево ограничение към съществуваща колона в MySQL

  2. Специални символи в PHP / MySQL

  3. Съхранение на SHA1 хеш стойности в MySQL

  4. Мигриране на MySQL към PostgreSQL на AWS RDS, част 4

  5. Как да проверите размера на базата данни MySQL в Linux