日期时间函数
本节介绍了基本算术操作符(+,-)的功能和可以用于处理日期/时间类型值的函数。
在表 1中说明了基本算术操作符(+,-)的功能。表 2显示了所有可以用于处理日期/时间类型值的函数,关于这些函数的更详细信息将在后面的部分中出现。对于格式化类型的函数,请参见格式化函数(数字、字符、日期类型)。在进行本节的内容学习前,请在章节日期/时间类型中熟悉日期/时间类型的背景信息。
表 1. Date/Time Operators
操作符 | 示例 | 返回值 |
+ | DATE '2001-09-28' + 7 | 05-OCT-01 00:00:00 |
+ | TIMESTAMP '2001-09-28 13:30:00' + 3 | 01-OCT-01 13:30:00 |
- | DATE '2001-10-01' - 7 | 24-SEP-01 00:00:00 |
- | TIMESTAMP '2001-09-28 13:30:00' - 3 | 25-SEP-01 13:30:00 |
- | TIMESTAMP '2001-09-29 03:00:00' - TIMESTAMP '2001-09-27 12:00:00' | @ 1 day 15 hours |
在表 2中显示的日期/时间函数中,DATE和TIMESTAMP数据类型可以互换使用。
表 2. Date/Time Functions
函数 | 返回数据类型 | 描述 | 示例 | 返回值 |
ADD MONTHS(DATE, NUMBER) | DATE | 为指定日期添加月份数。 | ADD MONTHS('28-FEB-97', 3.8) | 31-MAY-97 00:00:00 |
CURRENT DATE | DATE | 返回当前日期。 | CURRENT DATE | 04-JUL-07 |
CURRENT TIMESTAMP | TIMESTAMP | 返回当前日期和时间。 | CURRENT TIMESTAMP | 04-JUL-07 15:33:23.484 |
EXTRACT(field FROM TIMESTAMP) | DOUBLE PRECISION | 获取子字段。 | EXTRACT(hour FROM TIMESTAMP '2001-02-16 20:38:40') | 20 |
LAST DAY(DATE) | DATE | 返回指定日期对应月份的最后一天。如果指定日期包含时间,返回结果中也将包含同样时间。 | LAST DAY('14-APR-98') | 30-APR-98 00:00:00 |
LOCALTIMESTAMP [ (precision) ] | TIMESTAMP | 返回当前会话时间戳。 | LOCALTIMESTAMP | 04-JUL-07 15:33:23.484 |
MONTHS BETWEEN(DATE, DATE) | NUMBER | 返回指定日期之间的月份差。 | MONTHS BETWEEN('28-FEB- 07', '30-N0V-06') | 3 |
NEXT DAY(DATE, dayofweek) | DATE | 返回指定日期之后的下一个指定星期几的日期。 | NEXT DAY('16-APR- 07','FRI') | 2 0-APR-07 00:00:00 |
NEW TIME(DATE, VARCHAR, VARCHAR) | DATE | 转换指定日期时间为另一个时区。 | NEW TIME(T0 DATE '2005/05/29 01:45', 'AST', 'PST') | 2005/05/29 21:45:00 |
ROUND(DATE [, format]) | DATE | 格式化指定日期。 | R0UND(T0 DATE('29-MAY- 05'),'M0N') | 01-JUN-05 00:00:00 |
SYS EXTRACT UTC(TIME STAMP WITH TIME ZONE) | TIMESTAMP | 将带时区的时间戳转换为UTC时间戳。 | SYS EXTRACT UTC(CAST('24 -MAR-11 12:30:00PM - 04:00' AS TIMESTAMP WITH TIME ZONE)) | 2 4-MAR-11 16:30:00 |
SYSDATE | DATE | 返回当前系统日期和时间。 | SYSDATE | 01-AUG-12 11:12:34 |
SYSTIMESTAMP() | TIMESTAMP | 返回当前系统时间戳。 | SYSTIMESTAMP | 01-AUG-12 11:11:23.665 229 -07:00 |
TRUNC(DATE [format]) | DATE | 根据格式要求截断指定日期。 | TRUNC(T0 DATE('2 9-MAY- 05'), 'MON') | 01-MAY-05 00:00:00 |