将第1个日期插入当前月的结束日期的存储过程

时间:2019-10-15 15:02:35

标签: mysql stored-procedures

一段时间以来,我一直在努力解决这个问题,并且在弄清楚从今天到月末插入其余的日子方面取得了一些进展,但是我没有运气来弄清楚如何使@start_date从当前月份的开始进行选择。存储过程如下:

    BEGIN 
    SET @start_date = NOW(); 
    SET @end_date = DATE_ADD(NOW(), INTERVAL 30 DAY); 
    WHILE(@start_date< @end_date) DO 
        INSERT INTO date (date) VALUES (@start_date); 
        SET @start_date = DATE_ADD(@start_date, INTERVAL 1 DAY); 
    END WHILE; 
END

我希望获得什么解释,我需要替换一下NOW()值以使其能够动态检索当前月份的开始日期吗?当然,对日期进行硬编码是可行的,但是由于该存储过程要每月进行一次例行检查,因此硬编码并不是最佳的适用方案。预先谢谢你!

1 个答案:

答案 0 :(得分:0)

解决了!对于遇到相同问题或类似问题的任何人,这是我的解决方案。

BEGIN 
    SET @start_date = DATE_SUB(LAST_DAY(NOW()),INTERVAL DAY(LAST_DAY(NOW()))-1 DAY); 
    SET @end_date = DATE_FORMAT(CURDATE() + INTERVAL 1 MONTH,'%Y-%m-01');  
    WHILE(@start_date < @end_date) DO 
        INSERT INTO date (date) VALUES (@start_date); 
        SET @start_date = DATE_ADD(@start_date, INTERVAL 1 DAY); 
    END WHILE; 
END