基于interval-sql获取两个日期之间的所有日期

x4shl7ld  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(378)

我有开始日期和结束日期,我想根据间隔获取这两个日期之间的所有日期。 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实现etc,并将输出存储在表中。

dw1jzc5e

dw1jzc5e1#

mysql不允许只通过查询得到这样的结果,
您可以创建一个过程并将其插入到一个表中,您可以将其用于日期。
试试这样的

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;

现在,日历表中包含了基于开始日期、结束日期和间隔的所有日期。
你可以试一试

相关问题