首页 > 解决方案 > 将第一个日期插入当月结束日期的存储过程

问题描述

一段时间以来,我一直在尝试解决这个问题,并且在弄清楚从今天到月底插入剩余的日子方面取得了一些进展,但是我没有运气弄清楚如何制作以便@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() 值以使其动态检索当月的开始日期?当然,对日期进行硬编码是可行的,但由于此存储过程意味着每月例行公事,因此硬编码并不是最适用的场景。先感谢您!

标签: mysqlstored-procedures

解决方案


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

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

推荐阅读