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>