• 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,重点掌握这些应该足够了,其他不常用的可以用的时候再查找。

  • 相关阅读:
    Android应用基础概念
    Sqlserver Rand
    sqlite3 锁
    上海盛大网络浩方在线招聘网站程序
    代码片段
    泛型类型的返回
    招 .Net 网站程序员, Flash 程序员
    ACS 20070412 TODO
    MSSQL 2005 分页分析及优化
    虚惊一场
  • 原文地址:https://www.cnblogs.com/zlbx/p/4817910.html
Copyright © 2020-2023  润新知