zoukankan      html  css  js  c++  java
  • 使用INTERVAL YEAR TO MONTH类型

    Oracle Database 9i数据库引入了一种新特性,可以用来存储时间间隔。时间间隔的例子包括:

    ● 1年零3个月

    ● 25个月

    ● -3天5小时16分

    ● 1天7小时

    ● -56小时

    注意:

    不要混淆时间间隔与时间值或时间戳的概念。时间间隔记录的是一段时间长度(例如1年零3个月),而时间值或时间戳记录的是一个特定的日期和时间(例如2006年10月28日下午7点32分16秒)。

    在本书假想的在线商店这个例子中,我们可能想在特定的一段时间内对某种商品打折。例如,可以让顾客使用优惠券,其有效期为几个月;或者为在几天内促销产品而打折。本节后面将介绍几个使用优惠券和促销的例子。

    表5-10列出了时间间隔的类型。

    表5-10  时间间隔类型

        

        

    INTERVAL YEAR[ (years_precision)]TO MONTH

    存储一个时间间隔,其单位为年和月;可以通过指定可选的years_precision参数来指定年的精度,该参数是一个0~9的整数。默认的精度为2,意思是可以在时间间隔中为年数存储两位数字。如果试图向表中添加一行年数超过INTERVAL YEAR TO MONTH列可以存储的记录,就会返回一个错误。时间间隔既可以存储正数,也可以存储负数

    INTERVAL DAY[(days_precision)]

    TO SECOND[( seconds_precision)]

    存储一个时间间隔,其单位为天和秒;可以通过指定可选的days_precision参数来指定天的精度,该参数是一个0~9的整数,默认值为2。另外,还可以通过指定可选的seconds_precision参数来指定秒的小数部分的精度,该参数是一个0~9的整数,默认值为6。时间间隔既可以存储正数,也可以存储

    表5-11  时间间隔字面量的例子

    时间间隔字面量

    说明

    INTERVAL '1' YEAR

    时间间隔为1年

    INTERVAL '11' MONTH

    时间间隔为11个月

    INTERVAL '14' MONTH

    时间间隔为14个月(等于1年零2个月)

    INTERVAL '1-3' YEAR TO MONTH

    时间间隔为1年零3个月

    INTERVAL '0-5' YEAR TO MONTH

    时间间隔为0年5个月

    INTERVAL '123' YEAR(3) TO MONTH

    时间间隔为123年,精度为3位数字

    INTERVAL '-1-5' YEAR TO MONTH

    时间间隔为负数,值为1年零5个月

    INTERVAL '1234' YEAR(3)

    时间间隔无效:1234包含4位数字,因此它包含的数字超过了精度(只允许最多3位数字)所允许的范围

    SQL示例:

    SQL> select interval '11' month from dual;
    INTERVAL'11'MONTH
    ---------------------------------------
    +00-11
    
    SQL> select interval '11' year from dual;
    INTERVAL'11'YEAR
    ---------------------------------------
    +11-00
    
    SQL> select interval '14' month from dual;
    INTERVAL'14'MONTH
    ---------------------------------------
    +01-02
    
    SQL> select interval '1-3' year to month from dual;
    INTERVAL'1-3'YEARTOMONTH
    ---------------------------------------
    +01-03
    
    SQL> select interval '0-3' year to month from dual;
    INTERVAL'0-3'YEARTOMONTH
    ---------------------------------------
    +00-03
    SQL> select interval '101' year(3) from dual;
    INTERVAL'101'YEAR(3)
    ---------------------------------------
    +101-00
    
    SQL> select interval '-10-5' year to month from dual;
    INTERVAL'-10-5'YEARTOMONTH
    ---------------------------------------
    -10-05
    
    SQL> select interval '1234' year(3) from dual;
    select interval '1234' year(3) from dual
    ORA-01873: 间隔的前导精度太小
    
    SQL> 

    5.8.1  使用INTERVAL YEAR TO MONTH类型

    INTERVAL YEAR TO MONTH类型可以用来存储单位为年和月的时间间隔。下面这条语句创建一个名为coupons的表,用来存储优惠券信息。coupons表包含了一个INTERVAL YEAR TO MONTH类型的列duration,该列用来记录优惠券有效的时间间隔。注意,此处指定了duration列的精度为3,这就是说可以为该列的年数部分存储3位数字:

     CREATE TABLE coupons (
    coupon_id INTEGER CONSTRAINT coupons_pk PRIMARY KEY,
    name VARCHAR2(30) NOT NULL,
    duration INTERVAL YEAR(3) TO MONTH
    );

     

    要向数据库提供一个INTERVAL YEAR TO MONTH字面值,可以使用下面的简化语法:

    INTERVAL '[+|-][y][-m]' [YEAR[( years_precision)])] [TO MONTH]

     

     

    其中

    ● + 或 - 是一个可选的指示符,用来说明时间间隔是正数还是负数(默认为正数)。

    ● y 是一个可选参数,表示时间间隔的年数部分。

    ● m 是一个可选参数,表示时间间隔的月数部分。如果指定了年数和月数,必须在INTERVAL子句中包含TO MONTH。

    ● year_precision是一个可选参数,用来说明年数的精度(默认为2)。

    《FROM:http://www.cnblogs.com/theurgy/articles/1549454.html

  • 相关阅读:
    [Python学习]Iterator 和 Generator的学习心得
    ubantu linux的bash shell初接触
    Linux-Ubuntu 启用root账户
    Ubuntu Linux系统三种方法添加本地软件库
    ASK,OOK,FSK的联系和区别
    spinlock一边连逻辑一边连控制器
    Cgroup与LXC简介
    关于 package.json 和 package-lock.json 文件说明
    ng build --aot 与 ng build --prod
    【Rxjs】
  • 原文地址:https://www.cnblogs.com/rusking/p/4599599.html
Copyright © 2011-2022 走看看