关于时间函数的操作

Oracle中时间函数逐步整理一下,以往只查询网上的用法,自己整理的才是自己的

  • 转换 to_char、to_date : 转换格式时间,以时间2019-09-02 13:45:12为例  

    select to_char(to_date('2019-09-02 13:45:12','yyyy-mm-dd hh24:mi:ss'),'yy-mm-ddd hh:mi:ss') from dual;

格式 含义 显示值
yy 两位年  19
yyy 三位年 019
yyyy 四位年 2019
mm 两位月 09
mon 字符集表示 9月、nov
month 字符集 9月、november
dd 当月日期 02
ddd 当年日期 245
dy 当周第几天 星期一、fri
day 当周第几天 星期一、friday
hh 12小时制小时 01
hh24 24小时制小时 13
mi 分钟 45
ss 12
Q 季度quarter 简写 3
W 当月第几周,week简写 1
WW 当年第几周 35

 

  • 两个日期的差值:
    • 天数可以直接加减计算,用trunc函数取整(取整函数视情况,to_number直接显示数字):

      select trunc(sysdate-to_date('2019-09-02 13:45:12','yyyy-mm-dd hh24:mi:ss')) from dual;

    • 月份用months_between函数比较,得出小数用ceil取上,用floor取下

      select months_between(sysdate,to_date('2019-09-02 13:45:12','yyyy-mm-dd hh24:mi:ss')) from dual;

    • 年份用月份的值除12,得出小数用ceil取上,用floor取下

      select months_between(sysdate,to_date('2019-09-02 13:45:12','yyyy-mm-dd hh24:mi:ss'))/12 from dual;

    • 相差小时

      select trunc((sysdate-to_date('2020-07-16 16:03:45','yyyy-mm-dd hh24:mi:ss'))*24) from dual;

    • 相差分钟      

      select trunc((sysdate-to_date('2020-07-16 16:03:45','yyyy-mm-dd hh24:mi:ss'))*24*60) from dual;

    • 相差秒数

      select trunc((sysdate-to_date('2020-07-16 16:03:45','yyyy-mm-dd hh24:mi:ss'))*24*60*60) from dual;

posted @ 2020-07-16 15:46  xiaohe321  阅读(243)  评论(0)    收藏  举报