TO_YMINTERVAL 函数

TO_YMINTERVAL 函数将表示时间单位的字符串转换为 INTERVAL YEAR TO MONTH 字符值。此函数还可以接受数字和字符串作为其参数,并返回具有单位时间单位精度 YEAR 或 MONTH 的 INTERVAL 值。

当您定义范围间隔存储分配策略以分片表或索引时,您可以使用单个参数(或两个参数,其同义词 NUMTODSINTERVAL)的 TO_DSINTERVAL 函数来指定间隔范围值。

语法

数字转换为 INTERVAL
字符串转换为 INTERVAL
元素 描述 限制 语法
number 间隔中的年或月的数字。

可以是表达式,该表达式解析(或强制转型)到其中一个有效数字数据类型。

必须是下列其中之一的数据类型:
  • INT
  • BIGINT
  • SMALLINT
  • INT8
  • DECIMAL
  • REAL
  • FLOAT
  • SERIAL
  • SERIAL8
  • BIGSERIAL
数字
MM 指定间隔中月数的两个数字。连字符(-)必须在第一个数字之前。 必须是下列其中之一的数据类型:
  • CHAR
  • NCHAR
  • VARCHAR
  • NVARCHAR
  • LVARCHAR
字符串
YY 指定间隔中年数的两个数字 必须是下列其中之一的数据类型:
  • CHAR
  • NCHAR
  • VARCHAR
  • NVARCHAR
  • LVARCHAR
字符串

用法

当按间隔分片表或索引时,可以使用 TO_YMINTERVAL 函数指定间隔值。TO_YMINTERVAL 函数在允许内置例程的上下文中有效。NUMTOYMINTERVAL 函数与 TO_YMINTERVAL 函数相同都是用来转换数字值。

示例

以下示例显示了 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 子句