Mysql根据date类型分区

Mysql根据date类型分区

1. mysql 直接根据date 类型分区

create table tie_shop_device_day_1
(	
	tie_day datetime not null comment '数据关系归属日期' primary key,
	shop_id bigint not null comment '门店ID',
	shop_name varchar(255) default '' not null	
)
PARTITION BY range columns (tie_day) (
PARTITION p0 VALUES LESS THAN ('2018-08-01'),
PARTITION p1 VALUES LESS THAN ('2018-09-01')
);

注意这里使用的分区语法是range columns(tie_day)。 同时 less than 后跟的是标准的date日期。

2. 使用 to_days()函数 将date型值转为int 型值进行分区

select to_days('2018-12-12');
+-----------------------+
| to_days('2018-12-12') |
+-----------------------+
|                737405 |
+-----------------------+
1 row in set (0.00 sec)
create table tie_shop_device_day
(
	mid bigint auto_increment,
	tie_day date not null comment '数据关系归属日期',
	shop_id bigint not null comment '门店ID',
	shop_name varchar(255) default '' not null,
	primary key (mid,tie_day)
)
comment '门店设备日关系镜像数据(当日最后关系)'
PARTITION BY RANGE (to_days(tie_day)) (
PARTITION p0 VALUES LESS THAN (to_days('2018-08-01')),
PARTITION p1 VALUES LESS THAN (to_days('2018-09-01')),
PARTITION p2 VALUES LESS THAN (to_days('2018-10-01')),
PARTITION p3 VALUES LESS THAN (to_days('2018-11-01')),
PARTITION p4 VALUES LESS THAN (to_days('2018-12-01')),
PARTITION p5 VALUES LESS THAN (to_days('2019-01-01'))
);

你可能感兴趣的:(Mysql)