PL/SQL 日期时间类型函数及运算

时间:2022-07-02 01:23:24

内部存储格式:

世纪、年、月、日、小时、分钟、秒

默认格式是:DD-MON-RR。

SYSDATE返回当前的系统时间。

SELECTSYSDATEFROMDUAL;

对日期的数学运算

SELECT(SYSDATE-HIRE_DATE)/7FROMTABLENAMEWHEREROWNUM;

数字列

ADD_MONTHS(date,x)函数,返回加上X月后的日期DATE的值。X可以是任意整数。如果结果的月份中所包含的日分量少于DATE的月份的日分量,则返回结果月份的最后一天。如果不小于,则结果与DATE的日分量相同。时间分量也相同。

CURRENT_DATE以DATE类型返回会话时区当前的日期。这个函数同SYSDATE相似,除了SYSDATE不管当会话时区。

CURRENT_TIMESTAMP[(precision)]以TIMESTAMPWITHTIMEZONE类型返回会话时区当前的日期。如果指定precision,它指返回秒数的精度,缺省为6。

DBTIMEZONE返回数据库的时区。

LAST_DAY(日期)指定日期所在月份的最后一天的日期,这个函数可用来确定本月还有多少天。

LOCALTIMESTAMP[(precision)]以TIMESTAMP类型返回会话时区的当前日期。如果指定precision,它指返回秒数的精度,缺省为6。

MONTHS_BETWEEN(离当前比较近的日期date1,以前的日期)两个日期之间相差的月数(以日作为最小单位来计算的)。返回是相差的月数。如果date1和date2的日分量相同,或者这两个日期都分别是所在月的最后一天,那么返回结果是个整数。否则,返回结果包含一个分数,以一个月31天计算。

NEW_TIME(d,zone1,zone2)函数,当时区zone1中的日期和时间是D的时候,返回时区zone2中的日期和时间。

返回类型为DATE。zone1和zone2是字符字符串,另外的时区可在ORACLE9I中

通过查询V$TIMEZONE_NAMES得到。

NEXT_DAY(日期,星期几)指定日期后将要遇到的后七天的某一天的日期。

ROUND(日期,‘MONTH/YEAR')四舍五入得到新的日期。保留位置是月和年

SESSIONTIMEZONE返回当前会话的时区。返回类型是一个时区偏移或时区片名的字符字符串。如果指定格式,则与ALTERSESSION语句中的格式相同。

SYS_EXTRACT_UTC(datetime)从提供的DATETIME中以UTC(CoordinatedUniversalTime)返回时间。

DATETIME必须包含一个时区。

SYSTIMESTAMP以TIMESTAMPWITHTIMEZONE返回当前的日期和时间。当在分布式SQL语句中使用的时候,返回本地数据库的日期和时间。

TRUNC(日期,‘MONTH/YEAR')截取

TZ_OFFSET(timezone)以字符字符串返回提供的timezone和UTC之间的偏移量。timezone可以被指定为时区名或'+/-HH:HI'格式表示的偏移量。也可使用SESSIONTIMEZONE和DBTIMEZONE函数,返回格式为'+/-HH:HI'。

字符字符串时区

AST大西洋标准时

ADT大西洋夏令时

BST白令标准时

BDT白令夏令时

CST*标准时

CDT*夏令时

EST东部标准时

EDT东部夏令时

GMT格林威治平均时

HST阿拉斯加夏威夷标准时

HDT阿拉斯加夏威夷夏令时

MSTMountain标准时

MDTMountain夏令时

NST纽芬兰标准时

PST太平洋标准时

PDT太平洋夏令时

YSTYuKon标准时

YDTYuKon夏令时

日期和日期时间算术

运算返回类型

结果

d1-d2NUMBER

返回D1和D2之间相差的天数。该值是一个数值,其小数部分代表一天的几分之几。

dt1-dt2INTERVAL

返回DT1和DT2之间的时间间隔。

i1-i2INTERVAL

返回i1和i2之间的差距。

d1+d2N/A

非法——仅能进行两个日期之间的相减。

dt1+dt2N/A

非法——仅能进行两个日期之间的相减。

i1+i2INTERVAL

返回i1和i2的和。

d1+nDATE

在D1上加上N天作为DATE类型返回。N可以是实数,它包含一天的几分之几。

d1-nDATE

从D1上减去N天作为DATE类型返回。N可以是实数,它包含一天的几分之几。

dt1+i1DATETIME

返回DT1和I1的和。

dt1-i1DATETIME

返回DT1和I1之间的差距。

i1*nINTERVAL

返回I1的N次方。

i1/nINTERVAL

返回I1除以N的值。

表中注:

D1和D2指日期值;

DT1和DT2指日期时间值;

I1和I2指时间间隔值;

N指数字值。