本节讨论了 MySQL 分区中与分区表达式中使用的函数相关的具体限制。
在分区表达式中,只允许以下列表中显示的 MySQL 函数
UNIX_TIMESTAMP()
(带TIMESTAMP
列)
在 MySQL 9.0 中,分区剪枝支持 TO_DAYS()
、TO_SECONDS()
、YEAR()
和 UNIX_TIMESTAMP()
函数。有关详细信息,请参见 第 26.4 节,“分区剪枝”。
CEILING() 和 FLOOR()。 如果这些函数传递给它们的参数是精确数值类型,例如 INT
类型之一或 DECIMAL
,则它们中的每一个函数都只返回一个整数。这意味着,例如,以下 CREATE TABLE
语句将导致错误,如下所示
mysql> CREATE TABLE t (c FLOAT) PARTITION BY LIST( FLOOR(c) )(
-> PARTITION p0 VALUES IN (1,3,5),
-> PARTITION p1 VALUES IN (2,4,6)
-> );
ERROR 1490 (HY000): The PARTITION function returns the wrong type
带 WEEK 说明符的 EXTRACT() 函数。 当 EXTRACT()
函数用作 EXTRACT(WEEK FROM
时,返回值取决于 col
)default_week_format
系统变量的值。因此,当 EXTRACT()
指定单位为 WEEK
时,不允许将它用作分区函数。(错误 #54483)
有关这些函数的返回值类型以及 第 13.1 节,“数值数据类型” 的更多信息,请参见 第 14.6.2 节,“数学函数”。