MySQL 如何生成月份表
MySQL 如何生成月份表
如果遇到按照月份统计信息的时候,常用的统计方式就是用month表去连接order表,下面就是生成月份表的过程
1、首先是建表
1 CREATE TABLE `sn_month` (
2 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
3 `year` char(4) NOT NULL COMMENT '年份',
4 `month` tinyint(2) unsigned NOT NULL COMMENT '月份',
5 `date` char(10) NOT NULL COMMENT '年月',
6 `start_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '月份开始时间',
7 `end_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '月份结束时间',
8 PRIMARY KEY (`id`)
9 ) ENGINE=InnoDB AUTO_INCREMENT=2201 DEFAULT CHARSET=utf8 COMMENT='月份表';
2、利用代码,生成数据
1 $data = [];
2 $m = date('9');//当前月份
3 $y = date('2017');//当前年份
4 for($i = 0; $i < 24; $i++) {
5 $temp = [];
6 $temp['year'] = $y;
7 $temp['month'] = $m;
8 $temp['start_time'] = strtotime($y.'-'.$m.'-01');//开始时间
9 //计算结束时间
10 if ($m < 12) {
11 $temp['end_time'] = strtotime($y.'-'.($m + 1).'-01');
12 } else {
13 $temp['end_time'] = strtotime(($y+1).'-01-01');
14 }
15 $temp['date'] = $y.'-'.$m;
16 //这是倒序
17 if($m > 1) {
18 $m --;
19 }else{
20 $m = 12;
21 $y--;
22 }
23 //这是正序
24 if ($m > 11) {
25 $m = 1;
26 $y ++;
27 } else {
28 $m ++;
29 }
30 $data[] = $temp;
31 }
32 Db::name('month')->insertAll($data);
33 die;
3、最后效果图是是这样的:
月份倒序: 月份正序:
多学、
多记、
多练、