MySQL 8.4 参考手册  /  ...  /  与函数相关的分区限制

26.6.3 与函数相关的分区限制

本节讨论 MySQL 分区中与分区表达式中使用的函数相关的具体限制。

分区表达式中只允许以下列表中显示的 MySQL 函数

在 MySQL 8.4 中,分区剪枝支持 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(WEEK FROM col) 时,EXTRACT() 函数返回的值取决于 default_week_format 系统变量的值。由于这个原因,当 EXTRACT() 指定单位为 WEEK 时,它不被允许作为分区函数。(错误 #54483)

有关这些函数的返回类型以及 第 13.1 节,“数值数据类型” 的更多信息,请参见 第 14.6.2 节,“数学函数”