INTERVAL 数据类型存储表示时间范围的值。INTERVAL 类型分为两类:year-month 时间间隔和 day-time 时间间隔。
year-month 时间间隔可以表示年和月的范围,day-time 时间间隔可以表示天、小时、分钟、秒和秒的小数的范围。
INTERVAL largest_qualifier(n) TO smallest_qualifier
如表 1 中所示,此处 largest_qualifier 和 smallest_qualifier 关键字取自两个 INTERVAL 类中的一个。
如果 SECOND(或更大的时间单位)是 largest_qualifier,那么 INTERVAL 数据类型的声明可有选择地指定最大时间单位的精度 n(n 的范围为 1 到 9);这不是 DATETIME 数据类型的功能。
时间间隔类 | 时间单位 | 有效条目 |
---|---|---|
YEAR-MONTH INTERVAL | YEAR | 年数 |
YEAR-MONTH INTERVAL | MONTH | 月数 |
DAY-TIME INTERVAL | DAY | 天数 |
DAY-TIME INTERVAL | HOUR | 小时数 |
DAY-TIME INTERVAL | MINUTE | 分钟数 |
DAY-TIME INTERVAL | SECOND | 秒数 |
DAY-TIME INTERVAL | FRACTION | 秒的十进制小数,最多为 5 位。缺省小数位是 3 位(千分之一秒)。要指定非缺省小数位,请写 FRACTION(n),其中 1 ≤ n ≤ 5。 |
如同 DATETIME 数据类型一样,可以定义 INTERVAL,从而只包括所需的部分时间单位。但由于“月份”的构造(如在日历日期中使用时)不是具有固定天数的时间单位,所以单个 INTERVAL 值不能组合月份和日;不支持涉及两种不同的 INTERVAL 类的操作数的算术。
输入到 INTERVAL 列中的值不需要包括在列的数据类型声明中指定的全部时间单位。例如,可以将具有 HOUR TO SECOND 精度的值输入定义为 DAY TO SECOND 的列中。但是,值必须总是由连续的时间单位组成。在前面的示例中,不能只输入 HOUR 和 SECOND 值;还必须包括 MINUTE 值。
有效的 INTERVAL 文字包含 INTERVAL 关键字、要输入的值和字段限定符。(请参阅 GBase 8s SQL 指南:语法 中对文字时间间隔的论述。)当值只包含一个字段时,最大和最小字段相同。
当在 INTERVAL 列中输入值时,必须指定值中的最大和最小字段,就如对待 DATETIME 值那样。另外,可以有选择地指定第一个字段的精度(如果最后一个字段是 FRACTION,那么还可以指定最后一个字段的小数位)。如果最大和最小字段限定符都是 FRACTION,那么只能在最后一个字段中指定小数位。
最大和最小字段的可接受限定符与表 1 显示的 INTERVAL 字段的列表完全相同。
如果使用 DB-Access TABLE 菜单但没有指定任何 INTERVAL 字段限定符,那么指定缺省 INTERVAL 限定符 YEAR TO YEAR。
INTERVAL DAY(3) TO HOUR
INTERVAL 文字值使用 DATETIME 文字所用的定界符(在同一 INTERVAL 值中无效的 MONTH 和 DAY 时间单位除外)。下表显示了 INTERVAL 定界符。
定界符 | 在 INTERVAL 文字中的位置 |
---|---|
连字符 | 在值的 YEAR 与 MONTH 部分之间 |
空格 | 在值的 DAY 与 HOUR 部分之间 |
冒号 | 在值的 HOUR、MINUTE 与 SECOND 部分之间 |
小数点 | 在值的 SECOND 与 FRACTION 部分之间 |
INSERT INTO manufact (manu_code, manu_name, lead_time) VALUES ('BRO', 'Ball-Racquet Originals', '160')
由于将 lead_time 列定义为 INTERVAL DAY(3) TO DAY,所以此 INTERVAL 值只需要一个字段,即前导时间所需的日范围。如果字符串不包含所有字段的信息(或添加其他字段),那么数据库服务器返回错误。有关将 INTERVAL 值作为字符串来输入的更多信息,请参阅 GBase 8s SQL 指南:语法。
(所有字段的总位数)/2 + 1
例如,INTERVAL YEAR TO MONTH 需要 6 位数(4 位用于年份,2 位用于月份)并需要 4(即 (6/2) + 1)个字节的存储空间。
有关将 INTERVAL 用作常量表达式的信息,请参阅 GBase 8s SQL 指南:语法 中对 INTERVAL 字段限定符的描述。