电脑技术学习

关于oracle日期函数的介绍和使用

dn001

  在Oracle中有很多关于日期的函数,如:
  1、add_months()用于从一个日期值增加或减少一些月份
  date_value:=add_months(date_value,number_of_months)
  例:
  SQL> select add_months(sysdate,12) "Next Year" from dual;
  
  Next Year
  ----------
  13-11月-04
  
  SQL> select add_months(sysdate,112) "Last Year" from dual;
  
  Last Year
  ----------
  13-3月 -13
  
  SQL>
  
  2、current_date()返回当前会放时区中的当前日期
  date_value:=current_date
  SQL> column sessiontimezone for a15
  SQL> select sessiontimezone,current_date from dual;
  
  SESSIONTIMEZONE CURRENT_DA
  --------------- ----------
  +08:00 13-11月-03
  
  SQL> alter session set time_zone='-11:00'
   2 /
  
  会话已更改。
  
  SQL> select sessiontimezone,current_timestamp from dual;
  
  SESSIONTIMEZONE CURRENT_TIMESTAMP
  --------------- ------------------------------------
  -11:00 12-11月-03 04.59.13.668000 下午 -11:
          00
  
  SQL>
  
  3、current_timestamp()以timestamp with time zone数据类型返回当前会放时区中的当前日期
  timestamp_with_time_zone_value:=current_timestamp([timestamp_precision])
  SQL> column sessiontimezone for a15
  SQL> column current_timestamp format a36
  SQL> select sessiontimezone,current_timestamp from dual;
  
  SESSIONTIMEZONE CURRENT_TIMESTAMP
  --------------- ------------------------------------
  +08:00 13-11月-03 11.56.28.160000 上午 +08:
          00
  
  SQL> alter session set time_zone='-11:00'
   2 /
  
  会话已更改。
  
  SQL> select sessiontimezone,current_timestamp from dual;
  
  SESSIONTIMEZONE CURRENT_TIMESTAMP
  --------------- ------------------------------------
  -11:00 12-11月-03 04.58.00.243000 下午 -11:
          00
  
  SQL>
  
  4、dBTimezone()返回时区
  varchar_value:=dbtimezone
  SQL> select dbtimezone from dual;
  
  DBTIME
  ------
  -07:00
  
  SQL>
  
  5、extract()找出日期或间隔值的字段值
  date_value:=extract(date_field from [datetime_valueinterval_value])
  SQL> select extract(month from sysdate) "This Month" from dual;
  
  This Month
  ----------
      11
  
  SQL> select extract(year from add_months(sysdate,36)) "3 Years Out" from dual;
  
  3 Years Out
  -----------
      2006
  
  SQL>
  
  6、last_day()返回包含了日期参数的月份的最后一天的日期
  date_value:=last_day(date_value)
  SQL> select last_day(date'2000-02-01') "Leap Yr?" from dual;
  
  Leap Yr?
  ----------
  29-2月 -00
  
  SQL> select last_day(sysdate) "Last day of this month" from dual;
  
  Last day o
  ----------
  30-11月-03
  
  SQL>

  
  7、localtimestamp()返回会话中的日期和时间
  timestamp_value:=localtimestamp
  SQL> column localtimestamp format a28
  SQL> select localtimestamp from dual;
  
  LOCALTIMESTAMP
  ----------------------------
  13-11月-03 12.09.15.433000
  下午
  
  SQL> select localtimestamp,current_timestamp from dual;
  
  LOCALTIMESTAMP CURRENT_TIMESTAMP
  ---------------------------- ------------------------------------
  13-11月-03 12.09.31.006000 13-11月-03 12.09.31.006000 下午 +08:
  下午 00
  
  SQL> alter session set time_zone='-11:00';
  
  会话已更改。
  
  SQL> select localtimestamp,to_char(sysdate,'DD-MM-YYYY HH:MI:SS AM') "SYSDATE" from dual;
  
  LOCALTIMESTAMP SYSDATE
  ---------------------------- ------------------------
  12-11月-03 05.11.31.259000 13-11-2003 12:11:31 下午
  下午
  
  SQL>
  
  8、months_between()判定两个日期之间的月份数量
  number_value:=months_between(date_value,date_value)
  SQL> select months_between(sysdate,date'1971-05-18') from dual;
  
  MONTHS_BETWEEN(SYSDATE,DATE'1971-05-18')
  ----------------------------------------
                 389.855143
  
  SQL> select months_between(sysdate,date'2001-01-01') from dual;
  
  MONTHS_BETWEEN(SYSDATE,DATE'2001-01-01')
  ----------------------------------------
                 34.4035409
  
  SQL>
  
  9、next_day()给定一个日期值,返回由第二个参数指出的日子第一次出现在的日期值(应返回相应日子的名称字符串)