与分区相关函数的限制
本节讨论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_formatEXTRACT()WEEK
有关这些函数的返回类型以及“数值数据类型”的更多信息,请参见“数学函数”。
