Oracle(3)日期操作

1.Oracle中的日期处理(一个类型两个函数)
    日期的数据类型DATE,该类型可以包含日期时间
2.系统当前日期的获取方式
    SELECT SYSDATE FROM DUAL;    --日期时间
3.日期与字符串的转换问题
    (1)日期转换成字符串  TO_CHAR
        SELECT SYSDATE 标准显示,
               TO_CHAR(SYSDATE,'YYYY-MM-DD') 日期,
               TO_CHAR(SYSDATE,'YYYY') 四位日期,
               TO_CHAR(SYSDATE,'YY')   两位日期,
               TO_CHAR(SYSDATE,'MM')   月,
               TO_CHAR(SYSDATE,'DD')   月第几天,
               TO_CHAR(SYSDATE,'DDD')  年第几天,
               TO_CHAR(SYSDATE,'D')    周第几天,
               TO_CHAR(SYSDATE,'HH')   小时12,--12小时进位制
               TO_CHAR(SYSDATE,'HH24') 小时24,--24小时进位制
               TO_CHAR(SYSDATE,'MI')   分,
               TO_CHAR(SYSDATE,'SS')   秒,
               TO_CHAR(SYSDATE,'HH24:MI:SS') 时分秒,
               TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') 时间戳
          FROM DUAL;  
    (2)字符串转换成日期  TO_DATE
        SELECT TO_DATE('2018-05-06','YYYY-MM-DD')+2
          FROM DUAL;    --字符串转换日期
          
        SELECT TO_DATE('2018-05-06 18:23:56','YYYY-MM-DD HH24:MI:SS')
          FROM DUAL;    --字符串转换时间戳
    (3)应用场景
        TO_CHAR一般应用于SELECT语句,用以将日期按照固定的格式查询出来,显示到页面上
        TO_DATE应用场景有:
            ①在更新语句中(INSERT UPDATE)将指定字符串转换成日期录入数据库
            ②在查询语句中WHERE里面,将指定的字符串转换成日期进行比较
    (4)日期在数据库中的存储问题:
        所有数据库的日期类型,在数据库中都是以常整数存储的一个,从标注日期(1970-01-01 00:00:00)到当前指定日期之间的毫秒差。
        基于上述,日期比较实际上就是常整数之间的加减法,比较速度会快于字符串比较。
4.日期的计算
    (1)天数加减:
        直接操作,日期是基于天数操作的
    (2)月份加减:
        Oracle中对于日期的加减是通过一个函数ADD_MONTHS(日期,数值)完成的
            该函数会在当前日期的基础上,增加或减少指定月数
        --系统时间的次月同日
        SELECT ADD_MONTHS(SYSDATE,1)  下月同日,
               ADD_MONTHS(SYSDATE,-1) 上月同日
          FROM DUAL;
          
        --指定日期的次月同日  
        SELECT ADD_MONTHS(TO_DATE('2015-06-05','YYYY-MM-DD'),1)
          FROM DUAL;
          
        --指定日期不存在次月同日,以次月最后一日为同日
        SELECT ADD_MONTHS(TO_DATE('2015-08-31','YYYY-MM-DD'),1)
          FROM DUAL;
    (3)时分秒操作
        --加三个小时
        SELECT SYSDATE,SYSDATE+3/24
          FROM DUAL;
          
        --加10分钟
        SELECT SYSDATE,SYSDATE+10/60/24
          FROM DUAL;
          
        --加30秒
        SELECT SYSDATE,SYSDATE+30/60/60/24
          FROM DUAL;
    
5.日期修改操作
    --将PERSON表中的PDATE修改为系统当前时间
    UPDATE PERSON A
       SET A.PDATE=SYSDATE
     WHERE A.PID=3;
     
    --将孙二娘的生日修改为1999-01-01
    UPDATE PERSON A
       SET A.PDATE=TO_DATE('1999-01-01','YYYY-MM-DD')
     WHERE A.PNAME='孙二娘';

    --录入系统当前日期
    INSERT INTO PERSON(PID,PNAME,PNUMBER,PSEX,PSTATE,PMONEY,PDATE)
                VALUES(18,'你真好','1000','1','1','11111',SYSDATE);

    --录入指定日期
    INSERT INTO PERSON(PID,PNAME,PNUMBER,PSEX,PSTATE,PMONEY,PDATE)
                VALUES(19,'当然了','1000','1','1','11111',TO_DATE('1958-01-02','YYYY-MM-DD'));

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值