Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để điền vào một bảng với một phạm vi ngày?

Hãy thử điều này:

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

Đây là SQL Fiddle để chơi với nó: http://sqlfiddle.com/#!2/ 65d13 / 1

CHỈNH SỬA (để kiểm tra xem ngày đã tồn tại chưa) theo yêu cầu của 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;//

Đây là SQL Fiddle để chơi với nó: 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. '0000-00-00 00:00:00' không thể được biểu thị dưới dạng java.sql. Lỗi dấu thời gian

  2. Nhận ngày mới nhất từ ​​dữ liệu MySQL được nhóm

  3. CHẾ ĐỘ XEM DROP của MySQL

  4. Làm cách nào để thoát khỏi dấu nháy đơn (') trong MySql?

  5. Làm cách nào để kết nối với Cơ sở dữ liệu MySQL bằng Python?