mysql数据库生成日期相关数据

share mysql数据库生成日期相关数据

无聊的业务中居然设计了一个日历数据,mysql生成年日历数据。

  • PS:多么无聊~~~

table

CREATE TABLE `sys_calendar2`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `d_date` date NOT NULL,
  `d_year` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `d_month` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `d_day` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `d_week_times` int(11) NULL DEFAULT NULL,
  `d_week` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `d_week_name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `d_ym` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 854 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

procedure

CREATE DEFINER = CURRENT_USER PROCEDURE `proc_make_calendar2`(IN `vyear` varchar(10))
BEGIN
declare i int;
declare start_date varchar(20);
declare end_date varchar(20);
declare date_count int;
	set i=0;  
        set start_date= concat(vyear , '-01-01');
        set end_date = concat(cast(vyear AS UNSIGNED INTEGER)+1,'-01-01');	   
	set date_count = datediff(end_date,start_date);
	select end_date, start_date,date_count;
while i < date_count DO
	insert into sys_calendar2(d_date,d_year) -- ,d_month,d_day,d_week,d_week_name,d_ym)
	SELECT	start_date,vyear;
	set i=i+1;
	set start_date = DATE_FORMAT(date_add(STR_TO_DATE(start_date,'%Y-%m-%d %H:%i:%s'),interval 1 day),'%Y-%m-%d');  
end while; 
update sys_calendar2 set d_week_times=WEEKOFYEAR(d_date), d_month=DATE_FORMAT(d_date,'%m'),d_day=DATE_FORMAT(d_date,'%d'),d_week=weekday(d_date)+1,d_ym=DATE_FORMAT(d_date,'%Y%m');
update sys_calendar2 , sys_week set d_week_name=weekname where d_week=sys_week.id;
END
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ti-蜗牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值