一:PL/SQL时间相关类型
PL/SQL提供两个和日期时间相关的数据类型:
日期时间(Datetime)数据类型
时间间隔类型
二:日期时间类型
datetime数据类型有:
DATE
TIMESTAMP
TIMESTAMP WITH TIME ZONE
TIMESTAMP WITH LOCAL TIME ZONE
三:时间间隔类型
INTERVAL YEAR TO MONTH
INTERVAL DAY TO SECOND
四:日期时间类型 和 时间间隔类型 的可能字段
字段名称 | 有效日期时间值 | 有效的间隔值 |
---|---|---|
YEAR | -4712 to 9999 (除外0年) | 任何非0整数 |
MONTH | 01 - 12 | 0 - 11 |
DAY | 01 - 31 (受MONTH和YEAR的数值,按日历的区域设置的规则) | 任何非0整数 |
HOUR | 00 - 23 | 0 - 23 |
MINUTE | 00 - 59 | 0 - 59 |
SECOND | 00 to 59.9(n), 其中,9(n)是时间小数秒精度 在9(n)的部分是不适用DATE。 |
0 to 59.9(n), 其中,9(n)是区间小数秒精度 |
TIMEZONE_HOUR |
-12 - 14 (适应范围夏令时更改) DATE 或 TIMESTAMP不适用. |
不适用 |
TIMEZONE_MINUTE |
00 - 59 DATE 或 TIMESTAMP不适用. |
不适用 |
TIMEZONE_REGION | DATE 或 TIMESTAMP不适用. | 不适用 |
TIMEZONE_ABBR | DATE 或 TIMESTAMP不适用. | 不适用 |
五:日期时间函数(x 是DATE值)
S.N | 函数名称 & 描述 |
---|---|
1 | ADD_MONTHS(x, y); 增加y个月到x |
2 |
LAST_DAY(x); 返回该月的最后一天 |
3 |
MONTHS_BETWEEN(x, y); 返回x和y之间的月数 |
4 |
NEXT_DAY(x, day); 返回x后第二天的日期时间 |
5 |
NEW_TIME; 返回从由用户指定的一个时区的时间/天的值 |
6 |
ROUND(x [, unit]); x舍入; |
7 |
SYSDATE(); 返回当前日期时间。 |
8 |
TRUNC(x [, unit]); 截断x |
六:时间戳函数(x是TIMESTAMP值)
S.N | 函数名称 & 描述 |
---|---|
1 | CURRENT_TIMESTAMP(); 返回包含当前会话时间以及会话时区的时区中的时间戳( TIMESTAMP WITH TIME ZONE) |
2 |
EXTRACT({ YEAR | MONTH | DAY | HOUR | MINUTE | SECOND } | { TIMEZONE_HOUR | TIMEZONE_MINUTE } | { TIMEZONE_REGION | } TIMEZONE_ABBR ) FROM x) 从x提取并返回年,月,日,时,分,秒,或时间; |
3 |
FROM_TZ(x, time_zone); 通过TIME_ZONE指定WITH TIMEZONE一个TIMESTAMP时间戳x和时区转换 |
4 |
LOCALTIMESTAMP(); 返回包含在会话时区的本地时间时间戳 |
5 |
SYSTIMESTAMP(); 返回含有当前数据库的时间以及数据库时区的时区中的时间戳(TIMESTAMP WITH TIME ZONE) |
6 |
SYS_EXTRACT_UTC(x); WITH TIMEZONE X的TIMESTAMP转换为包含日期和时间UTC时间戳 |
7 |
TO_TIMESTAMP(x, [format]); 将字符串x转换为一个TIMESTAMP |
8 |
TO_TIMESTAMP_TZ(x, [format]); 字符串x转换到WITH TIMEZONE时间戳 |
七:时间间隔函数
S.N | 函数名称 & 描述 |
---|---|
1 | NUMTODSINTERVAL(x, interval_unit); 整数x转换为一个间隔(DAY TO SECOND) |
2 |
NUMTOYMINTERVAL(x, interval_unit); x到时间间隔(YEAR TO MONTH)数的转换 |
3 |
TO_DSINTERVAL(x); 将字符串x时间间隔(DAY TO SECOND)到秒转换 |
4 |
TO_YMINTERVAL(x); 将字符串x时间间隔(YEAR TO MONTH)转换为整数 |