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、最后效果圖是是這樣的:
月份倒序: 月份正序: