根据interval-sql获取两个日期之间的所有日期

时间:2018-04-10 14:53:51

标签: mysql date

我有开始日期和结束日期,我想根据间隔获取这两个日期之间的所有日期。 eg: start date:01-04-2018 and end date :20-04-2018 and interval is 3我希望输出如01-04-2018,04-04-2018,07-04-2018 ......等 使用sql并将输出存储在表中。

1 个答案:

答案 0 :(得分:0)

Mysql不允许您仅通过查询获得此类结果,

您可以创建一个程序并插入1个表格,您可以将其用于您的日期。

尝试类似

的内容
DELIMITER $$

DROP PROCEDURE IF EXISTS `calendar` $$

CREATE PROCEDURE `calendar`(
IN startDate DATE , 
IN endDate DATE , 
IN inter INT(1))

BEGIN
     CREATE TABLE IF NOT EXISTS `calendar` (`date` DATE);
     DELETE FROM `calendar`;

     WHILE startDate <= endDate DO
    INSERT INTO calendar VALUES(startDate);
    SET startDate := DATE_ADD(startDate, INTERVAL inter DAY);
     END WHILE ;

 END$$

DELIMITER ;


CALL calendar('2018-04-01','2018-04-30',1);

SELECT * FROM calendar;

现在日历表的所有日期都基于 startDate,endDate和interval

您可以尝试Demo