Я хочу разбить следующую таблицу на разделы:
CREATE TABLE tst_table (
dtime decimal(17,3)
);
dtime - время с милисекундами. Например 2013-02-10 15:16:45,100 = 20130210151645.100
Когда делаю следующее:
CREATE TABLE tst_table (
dtime decimal(17,3)
)
PARTITION BY RANGE ( YEAR(dtime) ) (
PARTITION p0 VALUES LESS THAN (2013),
PARTITION p1 VALUES LESS THAN (MAXVALUE)
);
То возникает сообщение об ошибке
ERROR 1486 (HY000): Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
В руководстве
http://dev.mysql.com/doc/refman/5.1/en/partitioning-range.html приведён пример:
CREATE TABLE employees (
separated DATE
)
PARTITION BY RANGE ( YEAR(separated) ) (
PARTITION p2 VALUES LESS THAN (2001),
PARTITION p3 VALUES LESS THAN MAXVALUE
);
Стоит заменить "separated DATE" на "separated INT" или "separated DEC(17,3)" возникает ошибка. Разве при использовании "separated DATE" выражение YEAR(separated) перестаёт быть timezone-dependent expressions?
Как разбить таблицу на разделы по годам? При этом дата хранится с милисекундами, так что тип у неё будет либо INT, либо decimal(17,3).