Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara mengisi tabel dengan rentang tanggal?

Coba ini:

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');

Inilah SQL Fiddle untuk dimainkan:http://sqlfiddle.com/#!2/ 65h13/1

EDIT (untuk memeriksa apakah tanggal sudah ada) seperti yang diminta oleh Andrew Fox .

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;//

Inilah SQL Fiddle untuk dimainkan: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. Cara Mengimpor CSV ke MySQL Workbench

  2. Fungsi MySQL COT() – Mengembalikan Kotangen Angka di MySQL

  3. Cronjob atau acara MySQL?

  4. CHAR() Contoh di MySQL

  5. Koneksi MySQL tidak berfungsi:2002 Tidak ada file atau direktori seperti itu