TO_YMINTERVAL 函数将表示时间单位的字符串转换为 INTERVAL YEAR TO MONTH 字符值。此函数还可以接受数字和字符串作为其参数,并返回具有单位时间单位精度 YEAR 或 MONTH 的 INTERVAL 值。
当您定义范围间隔存储分配策略以分片表或索引时,您可以使用单个参数(或两个参数,其同义词 NUMTODSINTERVAL)的 TO_DSINTERVAL 函数来指定间隔范围值。
元素 | 描述 | 限制 | 语法 |
---|---|---|---|
number | 间隔中的年或月的数字。
可以是表达式,该表达式解析(或强制转型)到其中一个有效数字数据类型。 |
必须是下列其中之一的数据类型:
|
数字 |
MM | 指定间隔中月数的两个数字。连字符(-)必须在第一个数字之前。 | 必须是下列其中之一的数据类型:
|
字符串 |
YY | 指定间隔中年数的两个数字 | 必须是下列其中之一的数据类型:
|
字符串 |
当按间隔分片表或索引时,可以使用 TO_YMINTERVAL 函数指定间隔值。TO_YMINTERVAL 函数在允许内置例程的上下文中有效。NUMTOYMINTERVAL 函数与 TO_YMINTERVAL 函数相同都是用来转换数字值。
以下示例指定一年的间隔:
TO_YMINTERVAL('01-00') TO_YMINTERVAL(1,'YEAR') NUMTOYMINTERVAL(1,'YEAR')
以下示例指定一个月的间隔:
TO_YMINTERVAL('00-01') TO_YMINTERVAL(1,'MONTH') NUMTOYMINTERVAL(1,'MONTH')
以下示例指定一年零六个月的间隔:
TO_YMINTERVAL('01-06') TO_YMINTERVAL(1.5,'YEAR') NUMTOYMINTERVAL(1.5,'YEAR')
以下示例显示如何使用表达式作为数字值:
TO_YMINTERVAL(10+10+100,'YEAR')
以下示例定义了具有范围间隔分片模式的表 t2 。这里的 DATETIME 列 dt1 是分片键,NUMTOYMINTERVAL 的返回值将间隔大小定义为 25 年。具有年份晚于 2005 年但早于 2031 的 dt1 值的行将存储在范围分片 p1 中:
CREATE TABLE t2 (c1 int, d1 date, dt1 DATETIME YEAR TO FRACTION) FRAGMENT BY RANGE (dt1) INTERVAL (NUMTOYMINTERVAL (25,'YEAR')) PARTITION p1 VALUES < DATETIME(2006-01-01 00:00:00.00000) YEAR TO FRACTION(5) IN dbs1;
如果插入一行,其中 dt1 中的 YEAR 值小于 2006 或大于 2030,那么数据库服务器将会自动创建一个新的间隔分片,其范围大小是 25 年。有关范围间隔分片的语法和语义的更多信息,请参阅 Interval fragment 子句。