一段时间以来,我一直在努力解决这个问题,并且在弄清楚从今天到月末插入其余的日子方面取得了一些进展,但是我没有运气来弄清楚如何使@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()值以使其能够动态检索当前月份的开始日期吗?当然,对日期进行硬编码是可行的,但是由于该存储过程要每月进行一次例行检查,因此硬编码并不是最佳的适用方案。预先谢谢你!
答案 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