http://docs.oracle.com/cd/B28359_01/server.111/b28286/functions001.htm#autoId5

 

本文内容

  • 日期函数
  • 附录
  • 修改记录

 

日期函数

日期函数操作日期值(DATE 类型的字段),时间戳值(TIMESTAMP、TIMESTAMP WITH TIME ZONE 和 TIMESTAMP WITH LOCAL TIME ZONE 类型的字段)和间隔值(INTERVAL DAY TO SECOND 和 INTERVAL YEAR TO MONTH)。

大多数日期函数,如 ADD_MONTHS、CURRENT_DATE、LAST_DAY、NEW_TIME 和 NEXT_DAY,是为了 Oracle DATE 类型设计。若你提供一个时间戳值作为它们的参数,则 Oracle 数据库在内部把输入类型转换成一个 DATE 值,并返回。当返回一个 number 值时,MONTHS_BETWEEN 函数会抛出异常;ROUND 和 TRUNC 函数不接受时间戳或间隔值。

剩下的日期函数是为了接受三种日期类型(如 date、timestamp 和 interval)设计的,并返回这些类型的一个值。

返回系统日期信息的所有日期函数,如 SYSDATE、SYSTIMESTAMP、CURRENT_TIMESTAMP 等等,对于每个SQL 语句,不管这些语句被引用多少次,都会重新计算一次。

ADD_MONTHS

CURRENT_DATE

CURRENT_TIMESTAMP

DBTIMEZONE

EXTRACT (datetime)

FROM_TZ

LAST_DAY

LOCALTIMESTAMP

MONTHS_BETWEEN

NEW_TIME

NEXT_DAY

NUMTODSINTERVAL

NUMTOYMINTERVAL

ROUND (date)

SESSIONTIMEZONE

SYS_EXTRACT_UTC

SYSDATE

SYSTIMESTAMP

TO_CHAR (datetime)

TO_TIMESTAMP

TO_TIMESTAMP_TZ

TO_DSINTERVAL

TO_YMINTERVAL

TRUNC (date)

TZ_OFFSET

 

ADD_MONTHS(date,integer)

ADD_MONTHS 返回日期 date 加整数月 integer 后的日期。月是由会话参数 NLS_CALENDAR 定义的。

date 参数可以是日期值,或是任何可以隐式转换成 DATE 类型的值。integer 参数可以是整数,或是任何可以隐式转换成整数的值。不管参数 date 的类型如何,返回类型总是 DATE

若 date 是月的最后一天,或结果月的天数比 date 少,则结果的天是结果月的最后一天。否则,与 date 的天相同。

示例 1:演示 employees 表 hire_date 字段加一个月。

  2         TO_CHAR(ADD_MONTHS(hire_date, 1), 'YYYY-MM-DD') "Next month",
  3         TO_CHAR(ADD_MONTHS(TO_DATE('2012-2-29', 'YYYY-MM-DD'), 1),
  4                 'YYYY-MM-DD') "Fewer Days"
  5    FROM employees
  6   WHERE last_name = 'Baer';
 
Current month Next month Fewer Days
------------- ---------- ----------
1994-06-07    1994-07-07 2012-03-31
 
SQL> 

相关文章: