1

我有一个表雇员,我需要根据时间戳月份对其进行分区。我尝试了一些类型但不起作用。

CREATE TABLE employees (
id INT NOT NULL,
fname VARCHAR(30),
lname VARCHAR(30),
hired DATE NOT NULL DEFAULT '1970-01-01',
separated TIMESTAMP NOT NULL DEFAULT '9999-12-31',
job_code INT,
store_id INT
)
PARTITION BY RANGE ( date_format(separated,'%m') ) (
PARTITION p0 VALUES LESS THAN (01),
PARTITION p1 VALUES LESS THAN (02),
PARTITION p2 VALUES LESS THAN (03),
 ----
PARTITION p4 VALUES LESS THAN (04)

);

创建此表时, 如果使用MONTH(seperated) ,则显示不允许使用此分区函数,它适用于 DATE 类型,但返回的默认值无效

4

1 回答 1

1

我们如何在我们的项目中做到这一点(可能不是正确的方式,但对我们有用)-(MySQL 5.1.60)

分区 p201 值小于 (TO_DAYS('2012-01-01')),
分区 p202 值小于 (TO_DAYS('2012-02-01')),
分区 p203 值小于 (TO_DAYS('2012-03-01) ')),
分区 p204 值小于 (TO_DAYS('2012-04-01')),
分区 p205 值小于 (TO_DAYS('2012-05-01')),
分区 p206 值小于 (TO_DAYS('2012) -06-01')),
分区 p207 值小于 (TO_DAYS('2012-07-01')),
分区 p208 值小于 (TO_DAYS('2012-08-01')),
分区 p209 值小于 ( TO_DAYS('2012-09-01')),
PARTITION p210 VALUES LESS THAN (TO_DAYS('2012-10-01')),
PARTITION p211 VALUES LESS THAN (TO_DAYS('2012-11-01')),
分区 p212 值小于 (TO_DAYS('2012-12-01'))

这是 2012 年全年的分区

于 2012-12-18T13:00:50.697 回答