MySQL 8.4 Reference Manual  /  ...  /  Partitioning Limitations Relating to Functions

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

EXTRACT()函数中的WEEK指定符。当使用EXTRACT()函数时,作为EXTRACT(WEEK FROM col),返回值取决于default_week_format系统变量的值。因此,当指定单位为WEEK时,EXTRACT()不允许作为分区函数。(Bug #54483)

查看第14.6.2节,“数学函数”,了解这些函数的返回类型,以及第13.1节,“数值数据类型”