CREATE DEFINER=`数据库名称`@`%` PROCEDURE `函数名称`(IN times VARCHAR(100))
BEGIN
declare years VARCHAR(100);-- 声明一个年份的变量
declare dates VARCHAR(100);-- 声明一个日期的变量
declare sqls VARCHAR(10000);-- 声明一个SQL的变量
set @years = DATE_FORMAT(times,'%Y'); -- 取今年是哪一年
set @dates = concat(YEAR(times),'-12-31'); -- 当前年份的最后一天的日期
-- 写一个循环,判断它不是一年中的第一天就拼接一条SQL插入到表中,一直到全年被插入截止
WHILE @dates >= concat(YEAR(times),'-01-01') DO
set @sqls =CONCAT('INSERT INTO 表名(`years`, `quarters`, `months`, `days`,`weekdays`, `weeks`) VALUES (',@years,',',QUARTER(@dates),',',DATE_FORMAT(@dates,'%m'),',',DATE_FORMAT(@dates,'%d'),',',WEEKDAY(@dates)+1,',',week(@dates)+1,')') ;
prepare stmt from @sqls; -- 预编释一下。 “stmt”预编释变量的名称,
execute stmt; -- 执行SQL语句
deallocate prepare stmt; -- 释放资源
set @dates= date_sub(@dates,interval 1 day); -- 减一天
END WHILE;
END
MySQL中,传入一个日期,将那年的每一天所对应的周几,第几周,第几个季度记录下来
于 2021-03-26 15:00:04 首次发布