http://baggio785.itpub.net/post/31233/286119

INTERVAL数据类型用来存储两个时间戳之间的时间间隔。 可以指定years and months,或者days,hours,minuts,seconds之间的间隔。本文为oracle的学习笔记,结合实例介绍INTERVAL数据类型。

INTERVAL数据类型用来存储两个时间戳之间的时间间隔。 可以指定years and months,或者days,hours,minuts,seconds之间的间隔。

oracle支持两种INTEVAL类型,它们分别是YEAR TO MONTH和DAY TO SECOND。每个类型都包含leading field和trailing field。主参数定义要被计算的date或者time,副参数定义最小增长量。

下面根据实例来介绍YEAR TO MONTH和DAY TO SECOND。

一、INTERVAL YEAR TO MONTH

声明INTERVAL YEAR TO MONTH的语法是:

其中:

1 'INTEGER[-INTEGER],为leading field以及可选的trailing field指定具体的数值。同时month即trailing field的取值范围是0到11。

2 percision,即精度,是对leading field的数值的最大长度的限制。取值范围为0-9,默认值是2。

代码一:

declare
v_inteval INTERVAL YEAR(3) TO MONTH;
begin
v_inteval := INTERVAL '123-2' YEAR TO MONTH; 
dbms_output.put_line(v_inteval);
end;

结果为:+123-02。

说明:表示123年2个月。在这个例子中,必须指定YEAR,即leading field的精度(percision),因为默认值为2,如果将声明部分修改为 v_inteval INTERVAL YEAR TO MONTH;会提示精度太小错误。另外,需要注意的是,声明部分需要标注精度,但是赋值部分,即v_inteval := INTERVAL '123-2' YEAR TO MONTH;不需要标注精度,如果标注,会提示语法错误。在本例中,如果精度修改为4,则结果为+0123-02。

代码二:

select INTEVAL '1234' YEAR(4) from dual;

结果为:+1234-00。

说明:表示1234年0个月。因为INTEVAL类型之一,INTERVAL YEAR TO MONTH,声明时YEAR(leading field)和MONTH(trailing field)必须同时存在,否则会提示错误信息。所以,如果我们单独引用YEAR或者MONTH时,代码二的例子无法编译通过,只能通过sql语句。

类似的例子还有:

select INTERVAL '345' MONTH(3) from dual;

结果为:+28-09。

二、INTERVAL DAY TO SECOND

声明INTERVAL DAY TO SECOND的语法是:

其中:

1 INTEGER指定days的数值,数值不能超过leading_percision。

2 time_expr指定格式为HH[:MI[:SS[.n]]]or MI[:SS[.n]] or SS[.n]的时间,n是second的小数部分,n的长度不能大于fractional_seconds_precision,并受限于fractional_seconds_precision的位数。如果leading field为day,则可以选择integer time_expr的模式。

3 leading_precision为leading_field的精度,取值范围为0-9,默认值为2。

4 fractional_seconds_precision为秒的精度取值范围1-9,默认值为6。

5 HOUR的取值范围为0-23,MINUTE的取值范围为0-59,MINUTE的取值范围为0-59.999999999。

代码一:

declare
v_inteval INTERVAL DAY(7) TO SECOND(5);
begin
v_inteval := INTERVAL '4 5:12:10.222' DAY TO SECOND; 
dbms_output.put_line(v_inteval);
end;

结果为:++0000004 05:12:10.22200。

说明:表示4天5小时12分10.222秒。在这个例子中,DAY以及SECOND的精度都是可选的,类似INTERVAL YEAR TO MONTH,声明部分需要标注精度,但是赋值部分,不需要标注精度,如果标注,会提示语法错误。

代码二:

select INTERVAL '4 5:12' DAY TO MINUTE from dual;

结果为:+04 05:12:00。

说明:表示4天5小时12分0秒。因为INTEVAL类型之一,INTERVAL DAY TO SECOND,声明时DAY和SECOND必须同时存在,否则会提示错误信息。所以,如果我们单独引用YEAR或者MONTH时,代码二的例子无法编译通过,只能通过sql语句。

类似的例子还有:

select INTERVAL '400 5' DAY(3) TO HOUR from dual;
select INTERVAL '400' DAY(3) from dual;
select INTERVAL '11:12:10.2222222' HOUR TO SECOND(7) from dual;
select INTERVAL '11:20' HOUR TO MINUTE from dual;
select INTERVAL '10' HOUR from dual;
select INTERVAL '10:22' MINUTE TO SECOND from dual;
select INTERVAL '10' MINUTE from dual;
select INTERVAL '120' HOUR(3) from dual;
select INTERVAL '30.12345' SECOND(2,4) from dual;(注意,该结果为+00 00:00:30.1235,如果精度为1,3,则结果为+0 00:00:30.123,如果精度为3,7,则结果为+000 00:00:30.1234500)

转载于:https://blog.51cto.com/garlics/1121971

INTERVAL数据类型-007学习笔记相关推荐

  1. mysql的基本数据类型_mysql基本数据类型(mysql学习笔记三)

    Mysql数据类型 小数: 浮点:小数位可以变化 Float单精度默认精度6位左右 Double双精度默认精度16位左右 支持,控制数值范围 Type(M,D) M表示所有数值位数(不包括小数点和符号 ...

  2. mysql5 数据类型,Mysql学习笔记5-----字段的数据类型

    一.数值型 整形: tinyint 1字节 smallint 2字节 mediumint 3字节 int/intege 4字节 bigint 8字节 可以用unsigned控制是否有正负 可以用zer ...

  3. LabView学习笔记(五):数据类型综合实验

    Labview学习笔记: LabView学习笔记(一):基础介绍 LabView学习笔记(二):滤波器实验 LabView学习笔记(三):基本控件 LabView学习笔记(四):动态数据类型 LabV ...

  4. LabView学习笔记(四):动态数据类型

    Labview学习笔记: LabView学习笔记(一):基础介绍 LabView学习笔记(二):滤波器实验 LabView学习笔记(三):基本控件 LabView学习笔记(四):动态数据类型 LabV ...

  5. Typescript 学习笔记七:泛型

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  6. Typescript 学习笔记一:介绍、安装、编译

    前言 整理了一下 Typescript 的学习笔记,方便后期遗忘某个知识点的时候,快速回忆. 为了避免凌乱,用 gitbook 结合 marketdown 整理的. github地址是:ts-gitb ...

  7. LabView学习笔记(十):条件结构

    Labview学习笔记: LabView学习笔记(一):基础介绍 LabView学习笔记(二):滤波器实验 LabView学习笔记(三):基本控件 LabView学习笔记(四):动态数据类型 LabV ...

  8. LabView学习笔记(九):数组与簇

    Labview学习笔记: LabView学习笔记(一):基础介绍 LabView学习笔记(二):滤波器实验 LabView学习笔记(三):基本控件 LabView学习笔记(四):动态数据类型 LabV ...

  9. LabView学习笔记(八):属性节点

    Labview学习笔记: LabView学习笔记(一):基础介绍 LabView学习笔记(二):滤波器实验 LabView学习笔记(三):基本控件 LabView学习笔记(四):动态数据类型 LabV ...

最新文章

  1. 微软私有云分享(R2)11-应答文件浅析
  2. 浏览器无法打开摄像头
  3. 救命!我的电子邮件发不到 500 英里以外!
  4. 删除context node后遗留的问题
  5. MySQL group_concat()函数
  6. 有关cookie实现统计pv,uv的一些用法
  7. 特别推荐:系统性能提升优先法宝 | 缓存应用实践
  8. 03-13 微信小程序自动化测试
  9. SyntaxError: Non-ASCII character ‘\xe7’ in file car-training.py on line 7, but no encoding declared;
  10. 苹果手机双卡双待是哪一款_等等党大获全胜 多款5G+5G双卡双待手机值得推荐
  11. 苹果新园区最新内部效果图流出
  12. [Python] 年终奖税后计算器
  13. mysql amoeba 事务_MySQL-Amoeba
  14. java毕业设计——基于java+AngularJS+jsp的配件营销系统设计与实现(毕业论文+程序源码)——配件营销系统
  15. 《达摩克利斯之剑 》
  16. C语言 从键盘输入圆的半径,计算并输出圆的正内接六边形的面积,以及这个正六边形面积占圆面积之百分比
  17. 视频分割软件,将一个视频分割成多段小的视频
  18. 微信小程序初体验(上)- 腾讯ISUX社交用户体验设计成员出品
  19. 淘宝无货源与亚马逊无货源模式谁更好做?
  20. (二)安装机器人操作系统-ros

热门文章

  1. android锁屏流程_Android开机锁屏流程分析
  2. 7-5 二分法求多项式单根 (20分)
  3. mysql 数据泵_Oracle 数据泵详解
  4. protobufjs 命令执行_【原码笔记】-- protobuf.js 与 Long.js
  5. 【java】暑期需要复习的操作
  6. echarts X轴 或者 Y轴 添加标识线
  7. JavaScript脚本文件学习总结
  8. 三分钟了解“Java重写”
  9. 云开发使用 got 的 get/post 传参请求示例代码
  10. 【iOS官方文档翻译】iOS蓝牙的基本概念