本节讨论 MySQL 分区中与分区表达式中使用的函数相关的具体限制。
分区表达式中只允许以下列表中显示的 MySQL 函数
UNIX_TIMESTAMP()
(与TIMESTAMP
列一起使用)
在 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 节,“数学函数”。