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 タイプでは機能しますが、seperated に対して無効なデフォルト値を返します。

4

1 に答える 1

1

私たちのプロジェクトでそれを行う方法 (正しい方法ではないかもしれませんが、私たちにとってはうまくいきます) - (MySQL 5.1.60)

PARTITION p201 VALUES LESS THAN (TO_DAYS('2012-01-01')),
PARTITION p202 VALUES LESS THAN (TO_DAYS('2012-02-01')),
PARTITION p203 VALUES LESS THAN (TO_DAYS('2012-03-01) ')),
PARTITION p204 VALUES LESS THAN (TO_DAYS('2012-04-01')),
PARTITION p205 VALUES LESS THAN (TO_DAYS('2012-05-01')),
PARTITION p206 VALUES LESS THAN (TO_DAYS('2012) -06-01')),
PARTITION p207 VALUES LESS THAN (TO_DAYS('2012-07-01')),
PARTITION p208 VALUES LESS THAN (TO_DAYS('2012-08-01')),
PARTITION p209 VALUES LESS THAN ( 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 に答える