与分区相关函数的限制
本节讨论MySQL分区中的限制,这些限制专门与分区表达式中使用的函数有关。
分区表达式中仅允许以下列表中显示的MySQL函数:
ABS()
CEILING()
(请参阅 CEILING()和FLOOR())DATEDIFF()
DAY()
DAYOFMONTH()
DAYOFWEEK()
DAYOFYEAR()
EXTRACT()
(请参阅带有WEEK说明符的EXTRACT()函数)FLOOR()
(请参阅 CEILING()和FLOOR())HOUR()
MICROSECOND()
MINUTE()
MOD()
MONTH()
QUARTER()
SECOND()
TIME_TO_SEC()
TO_DAYS()
TO_SECONDS()
UNIX_TIMESTAMP()
(带TIMESTAMP
列)WEEKDAY()
YEAR()
YEARWEEK()
在MySQL 8.0,分区修剪被支撑为TO_DAYS()
,TO_SECONDS()
,YEAR()
,和UNIX_TIMESTAMP()
功能。有关更多信息,请参见“分区修剪”。
CEILING()和FLOOR()。这些函数中的每一个仅在传递了确切数字类型的参数(例如INT
类型或)后才返回整数DECIMAL
。例如,这意味着以下CREATE TABLE
语句由于错误而失败,如下所示:
mysql>CREATE TABLE t (c FLOAT)PARTITION BY LIST ( FLOOR(c) )( ->PARTITION p0VALUES IN (1,3,5), ->PARTITION p1VALUES IN (2,4,6) -> ); ERROR 1490 (HY000): The PARTITION function returns the wrong type
WEEK说明符的EXTRACT()函数。EXTRACT()
当用作时,函数返回的值取决于系统变量的值。因此,当将单位指定为时,不允许将其用作分区功能。(缺陷#54483)EXTRACT(WEEK FROM col)
default_week_format
EXTRACT()
WEEK
有关这些函数的返回类型以及“数值数据类型”的更多信息,请参见“数学函数”。