作者:喝喝88地盘 | 来源:互联网 | 2023-06-22 21:34
简述
在本章中,我们将讨论 PL/SQL 中的日期和时间。PL/SQL 中有两类与日期和时间相关的数据类型 -
日期时间数据类型是 -
间隔数据类型是 -
日期时间和间隔数据类型的字段值
两个都 datetime 和 interval 数据类型包括 fields. 这些字段的值决定了数据类型的值。下表列出了日期时间和间隔的字段及其可能的值。
字段名称 |
有效的日期时间值 |
有效间隔值 |
---|
YEAR |
-4712 到 9999(不包括第 0 年) |
任何非零整数 |
MONTH |
01 至 12 |
0 到 11 |
DAY |
01 到 31(受 MONTH 和 YEAR 的值限制,根据区域设置的日历规则) |
任何非零整数 |
HOUR |
00 到 23 |
0 到 23 |
MINUTE |
00 至 59 |
0 到 59 |
SECOND |
00 到 59.9(n),其中 9(n) 是时间小数秒的精度
9(n) 部分不适用于 DATE。
|
0 到 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。 |
不适用 |
日期时间数据类型和函数
以下是日期时间数据类型 -
日期
它以字符和数字数据类型存储日期和时间信息。它由有关世纪、年、月、日、时、分和秒的信息组成。它被指定为 -
时间戳
它是 DATE 数据类型的扩展。它存储 DATE 数据类型的年、月和日,以及小时、分钟和秒值。它对于存储精确的时间值很有用。
带时区的时间戳
它是 TIMESTAMP 的变体,在其值中包含时区区域名称或时区偏移量。时区偏移量是本地时间和 UTC 之间的差异(以小时和分钟为单位)。此数据类型可用于跨地理区域收集和评估日期信息。
带有当地时区的时间戳
它是 TIMESTAMP 的另一种变体,在其值中包含时区偏移量。
下表提供了日期时间函数(其中 x 具有日期时间值) -
序号 |
函数名称和描述 |
---|
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 具有时间戳值) -
序号 |
函数名称和描述 |
---|
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);
将 TIMESTAMP x 和 time_zone 指定的时区转换为 TIMESTAMP WITH TIMEZONE。
|
4 |
LOCALTIMESTAMP();
返回包含会话时区本地时间的 TIMESTAMP。
|
5 |
SYSTIMESTAMP();
返回包含当前数据库时间和数据库时区的 TIMESTAMP WITH TIME ZONE。
|
6 |
SYS_EXTRACT_UTC(x);
将 TIMESTAMP WITH TIMEZONE x 转换为包含 UTC 日期和时间的 TIMESTAMP。
|
7 |
TO_TIMESTAMP(x, [format]);
将字符串 x 转换为 TIMESTAMP。
|
8 |
TO_TIMESTAMP_TZ(x, [format]);
将字符串 x 转换为 TIMESTAMP WITH TIMEZONE。
|
例子
以下代码片段说明了上述功能的使用 -
Example 1
SELECT SYSDATE FROM DUAL;
Output −
Example 2
SELECT TO_CHAR(CURRENT_DATE, 'DD-MM-YYYY HH:MI:SS') FROM DUAL;
Output −
Example 3
SELECT ADD_MONTHS(SYSDATE, 5) FROM DUAL;
Output −
Example 4
SELECT LOCALTIMESTAMP FROM DUAL;
Output −
8/31/2012 5:26:55.347000 PM
间隔数据类型和函数
以下是间隔数据类型 -
区间函数
序号 |
函数名称和描述 |
---|
1 |
NUMTODSINTERVAL(x, interval_unit);
将数字 x 转换为 INTERVAL DAY TO SECOND。
|
2 |
NUMTOYMINTERVAL(x, interval_unit);
将数字 x 转换为 INTERVAL YEAR TO MONTH。
|
3 |
TO_DSINTERVAL(x);
将字符串 x 转换为 INTERVAL DAY TO SECOND。
|
4 |
TO_YMINTERVAL(x);
将字符串 x 转换为 INTERVAL YEAR TO MONTH。
|