zoukankan      html  css  js  c++  java
  • oracle系统函数(日期函数)

    oracle系统函数(日期函数)

    调用日期函数时,首先要明确两个概念,时间戳和日期是不同的,日期中包括年月日但不包括小时分钟秒,时间戳包括年月日小时分钟秒。在oracle中,一般情况下,函数中包含date字符的和日期有关,包含timestamp的函数和时间戳有关(时间戳可以理解为时间)。oracle中,日期一般以天为基本单位,时间相减时结果单位为天,时间与数字相加时,默认加对应数字的天数。

    一、调用时无参无括号时间函数

    1.返回系统当前日期sysdate

      --该函数返回值没有时间戳

    select sysdate from dual;

    2.返回会话中的日期和时间localtimestamp

      --不包括时区

    select localtimestamp from dual;

    3.返回会话时区中的当前日期和时间current_timestamp

      --包括时区

    select current_timestamp from dual;

    4.返回当前会话时区中的当前日期current_date

    select current_date from dual;

    5.返回数据库时区设置dbtimezone

    select dbtimezone from dual;

    6.返回当前会话时区sessiontimezone

    select sessiontimezone from dual;

    7.变动日期时间数值interval

      --设置数值代表秒,分,小时,天,月,年

        例如:

            interval '1' second    1秒
            interval '1' minute    1分
            interval '1' hour      1小时
            interval '1' day       1天(系统默认)
            interval '1' month     1月
            interval '1' year        1年

    select trunc(sysdate)+(interval '1' second),--加1s
      trunc(sysdate)+(interval '1' hour),--加1个小时
      trunc(sysdate)+(interval '1' day),--加1天
      trunc(sysdate)+1--加1天
      from dual;

     二、调用时有括号的日期函数

    1.返回指定月数后的日期add_months()

    select add_months(sysdate,3) from dual;

    等价于

    select trunc(sysdate)+interval '3' month from dual;

    2.返回本月最后一天的日期last_day()

    select last_day(sysdate) from dual;

    返回本月第一天

    select trunc(sysdate,'month') from dual;

    3.返回2个日期间隔月数month_between()

    select months_between(sysdate,to_date('2015-09-01','YYYY-MM-DD')) 
      from dual;

    4.四舍五入后的期间第一天round()

    select sysdate,
      round(sysdate),--最近0点日期
      round(sysdate,'day'),--最近星期日
      round(sysdate,'month'),--最近月初
      round(sysdate,'q'),--最近季出日期 
      round(sysdate,'year')--最近年初日期
      from dual;

    5.返回日期所在期间的第一天trunc()

    select trunc(sysdate),--今天日期
      trunc(sysdate,'day'),--本周星期日,等价于trunc(sysdate,'D')和trunc(sysdate,'d')
      trunc(sysdate,'month'),--本月初,若trunc(sysdate,'M')和trunc(sysdate,'m')则执行出错
      trunc(sysdate,'q'),--本季初日期
      trunc(sysdate,'year')--本年初日期,等价于trunc(sysdate,'Y')和trunc(sysdate,'y')
      from dual;

    6.返回下周某一天的日期next_day(),可以返回下周的周一到周日

    select sysdate,
      next_day(sysdate,'星期一'),--返回下周星期一
      next_day(sysdate,'星期二')--返回下周星期二
      from dual;

    7.提取时间日期中数据extract()

      --提取小时,分钟,秒时需要加上timestamp

    select 
      extract(minute from timestamp '2015-2-16 2:38:40'),--timestamp时间戳
      extract(hour from timestamp '2015-2-16 2:38:40'),
      --extract(hour from timestamp(sysdate)),错误
      extract(hour from localtimestamp),--返回值错误
      extract(hour from current_timestamp),
      extract(day from sysdate),--
      extract(month from sysdate),
      extract(year from sysdate)
      from dual;

    总结:关于日期的函数还是挺多的,但是常用的一般为sysdate,localtimestramp,trunc,interval和extract,重点掌握这些应该足够了,其他不常用的可以用的时候再查找。

  • 相关阅读:
    CF1202F You Are Given Some Letters...
    CF1178E Archaeology
    PTA (Advanced Level) 1005 Spell It Right
    PTA (Advanced Level) 1004 Counting Leaves
    Qt5——从零开始的Hello World教程(Qt Creator)
    PTA (Advanced Level) 1003 Emergency
    PTA (Advanced Level) 1002 A+B for Polynomials
    HDU 1272 小希的迷宫
    FZU 2150 Fire Game
    HihoCoder
  • 原文地址:https://www.cnblogs.com/zlbx/p/4817910.html
Copyright © 2011-2022 走看看