• oracle日期、转换函数


    转换函数

    日期类型转换成字符类型

    select to_char(sysdate) s1, --14-3月 -16
           to_char(sysdate, 'yyyy-mm-dd') s2, --2016-03-14
           to_char(sysdate, 'yyyy') s3, --2016
           to_char(sysdate, 'yyyy-mm-dd hh12:mi:ss') s4, --2016-03-14 10:21:57
           to_char(sysdate, 'hh24:mi:ss') s5, --10:21:57
           to_char(sysdate, 'DAY') s6 --星期一
      from dual;
    
    select * from mobile t where to_char(busi_date,'yyyymm')='201511'

    将字符类型转换为日期类型

    select to_date('20150312','yyyy-mm-dd') from dual; --2015/3/12

    返回两个日期间的天数

    select floor(sysdate- to_date('20151110','yyyymmdd')) from dual;

    返回最接近的日期

    select sysdate S1,
           round(sysdate) S2, --当前日期时间
           round(sysdate,'year') YEAR, --年
           round(sysdate,'month') MONTH, --月
           round(sysdate,'day') DAY --返回最接近的周日
      from dual;

    截取最接近的日期

    select sysdate S1,
           trunc(sysdate) S2, --返回当前日期,无时分秒
           trunc(sysdate, 'year') YEAR, --返回当前年的1月1日,无时分秒
           trunc(sysdate, 'month') MONTH, --返回当前月的1日,无时分秒
           trunc(sysdate, 'day') DAY --返回当前星期的星期天,无时分秒
      from dual;

    计算时间差,ORACLE时间差是以天数为单位,所以换算成年,月,日

    时间差-年

    select floor(to_number(sysdate-to_date('2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))/365) as spanYears from dual

    时间差-月

    select ceil(months_between(sysdate,to_date('2015-10-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))) as spanMonths from dual

    时间差-天

    select floor(to_number(sysdate-to_date('2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))) as spanDays from dual

    时间差-时

    select floor(to_number(sysdate-to_date('2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))*24) as spanHours from dual

    时间差-分

    select floor(to_number(sysdate-to_date('2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))*24*60) as spanMinutes from dual

    时间差-秒

    select floor(to_number(sysdate-to_date('2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))*24*60*60) as spanSeconds from dual

    更新时间,ORACLE时间加减是以天数为单位,设改变量为n,所以换算成年,月,日;

    改变时间-年 n=3,2015-->2018 select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate+n*365,'yyyy-mm-dd hh24:mi:ss') as newTime from dual;

    n=3,2015-11-21-->2016-2-21

    改变时间-月

    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),add_months(sysdate,n)as newTime from dual

    改变时间-日

    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate+n,'yyyy-mm-dd hh24:mi:ss') as newTime from dual

    改变时间-时

    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate+n/24,'yyyy-mm-dd hh24:mi:ss') as newTime from dual

    改变时间-分

    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate+n/24/60,'yyyy-mm-dd hh24:mi:ss') as newTime from dual

    改变时间-秒

    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate+n/24/60/60,'yyyy-mm-dd hh24:mi:ss') as newTime from dual

    查找月的第一天,最后一天,例如当前时间2015/11/21

    select trunc(trunc(sysdate,'month')-1,'MONTH') First_Day_Last_Month,    --2015/10/1
           trunc(sysdate,'month')-1/86400 Last_Day_Last_Month,    --2015/10/31 23:59:59
           trunc(sysdate,'month') First_Day_Cur_Month,    --2015/11/1
           last_day(Trunc(sysdate,'month'))+1-1/86400 Last_Day_Cur_Month --2015/11/30 23:59:59
      from dual;

    数字类型转换成字符类型

    select sal,to_char(sal,'$99999') n1,to_char(sal,'$99,999') n2 from emp

    转换为数字类型,以数字显示的小时数

    select to_number(to_char(sysdate,'hh12')) from dual;
     
  • 相关阅读:
    判断两个链表是否相交
    【转】TCP连接突然断开的处理方法
    【转】TCP/IP协议——ARP详解
    HTTP协议COOKIE和SESSION有什么区别
    【转】K-Means聚类算法原理及实现
    【转】机器学习实战之K-Means算法
    unity3d 调用Start 注意
    u3d 加载PNG做 UI图片
    Opengl的gl_NormalMatrix
    OpenGL 遮挡查询
  • 原文地址:https://www.cnblogs.com/xyhero/p/b035b649906f89fa0581120bd1044278.html
Copyright © 2020-2023  润新知