MySQL创建与填充日历表脚本及过程
需积分: 4 153 浏览量
更新于2024-08-03
收藏 5KB TXT 举报
创建一个名为`m_dim_day`的日历表并在MySQL中填充数据,通过调用存储过程`f_m_dim_day`初始化日历表,包含年、月、日、星期、季度等信息,并对指定年份的数据进行更新。
在MySQL数据库中,建立日历表是常见的需求,用于存储日期相关的元数据,便于在数据分析或业务处理中快速查询和关联。`m_dim_day`表就是一个典型的日历维度表,包含了日期相关的多种属性:
1. `dt`: 存储日期的字符串形式,如'YYYY-MM-DD'。
2. `dt2`: 可能是另一种日期表示形式,可能是与`dt`相同的格式。
3. `yr`: 年份,字符串形式。
4. `mm`: 月份,字符串形式。
5. `dd`: 日期,字符串形式。
6. `dayofweek`: 星期几,字符串形式。
7. `weeknum`: 该日期在当年的周数,字符串形式。
8. `qr`: 季度,字符串形式。
9. `bourse_week`: 可能是交易周的标识,可能与常规的周有所不同。
10. `yrmm`: 年月组合,字符串形式。
11. `week_begin`: 该周的开始日期,字符串形式。
12. `week_end`: 该周的结束日期,字符串形式。
13. `PRIMARY KEY (`dt`): 将`dt`设置为主键,确保每个日期的唯一性。
创建表`m_dim_day`的SQL语句使用了`CREATE TABLE`,定义了各个字段的数据类型和默认值,并设置了`InnoDB`引擎和`utf8`字符集。
存储过程`f_m_dim_day`用于初始化或更新指定年份的日历表数据。它接受一个年份作为输入参数(`inyear`),并执行以下操作:
1. 声明变量`i`、`start_date`和`end_date`。
2. 初始化`start_date`为当年的第一天,`end_date`为下一年的第一天。
3. 删除已有该年份的数据,以确保每次只保留最新一年的数据。
4. 计算`end_date`和`start_date`之间的日期差`date_count`,即当年的总天数。
5. 使用`WHILE`循环逐天插入数据,`i`从0递增到`date_count-1`。
6. 在循环内部,利用`DATE_FORMAT`和`STR_TO_DATE`函数将日期格式化,并插入到`m_dim_day`表中。
这个存储过程确保了日历表的完整性和时效性,可以根据需要定期调用来更新数据。在实际应用中,这样的日历表可以极大地提高查询效率,尤其是在处理时间序列数据时,例如统计每周、每月或每年的销售数据等。
2021-07-28 上传
2023-07-17 上传
2023-05-27 上传
2023-05-27 上传
2023-05-27 上传
2023-05-27 上传
2023-05-27 上传
2023-10-19 上传
√√√√√_文
- 粉丝: 38
- 资源: 26
最新资源
- 构建Cadence PSpice仿真模型库教程
- VMware 10.0安装指南:步骤详解与网络、文件共享解决方案
- 中国互联网20周年必读:影响行业的100本经典书籍
- SQL Server 2000 Analysis Services的经典MDX查询示例
- VC6.0 MFC操作Excel教程:亲测Win7下的应用与保存技巧
- 使用Python NetworkX处理网络图
- 科技驱动:计算机控制技术的革新与应用
- MF-1型机器人硬件与robobasic编程详解
- ADC性能指标解析:超越位数、SNR和谐波
- 通用示波器改造为逻辑分析仪:0-1字符显示与电路设计
- C++实现TCP控制台客户端
- SOA架构下ESB在卷烟厂的信息整合与决策支持
- 三维人脸识别:技术进展与应用解析
- 单张人脸图像的眼镜边框自动去除方法
- C语言绘制图形:余弦曲线与正弦函数示例
- Matlab 文件操作入门:fopen、fclose、fprintf、fscanf 等函数使用详解