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

Mysql 将第一个日期插入当月结束日期的存储过程,mysql,stored-procedures,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 (

一段时间以来,我一直在尝试破解这个问题,我在计算从今天到月底的剩余天数方面取得了一些进展,但我没有运气计算出如何使@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
开始
设置@start_date=NOW();
设置@end\u date=date\u ADD(现在(),间隔30天);
而(@start_date<@end_date)做
插入日期(date)值(@start_date);
设置@start\u date=date\u ADD(@start\u date,间隔1天);
结束时;
结束

我希望得到一些解释,我需要替换NOW()值,使其能够动态检索当前月份的开始日期?当然,对日期进行硬编码是可行的,但由于此存储过程意味着有一个每月例行程序,因此硬编码并不是最佳的应用场景。提前谢谢你

修好了!对于任何有相同问题或类似问题的人,这里是我的解决方案

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
开始
设置@start\u date=date\u SUB(最后一天(现在()),INTERVAL DAY(最后一天(现在())-1天);
设置@end_date=date_格式(CURDATE()+间隔1个月,%Y-%m-01');
而(@start_date<@end_date)做
插入日期(date)值(@start_date);
设置@start\u date=date\u ADD(@start\u date,间隔1天);
结束时;
结束