在本章中,我们将讨论 PL/SQL 中的日期和时间。 PL/SQL 中有两种与日期和时间相关的数据类型 -
() 数据类型是 -
区间数据类型是 -
日期时间和间隔数据类型的字段值
日期时间和间隔数据类型均由字段组成。 这些字段的值决定了数据类型的值。 下表列出了日期时间和间隔字段及其可能的值。
字段名称的有效日期时间值有效间隔值
年
-4712 至 9999(不包括 0 年)
任何四位非零整数
月
01 至 12
0 至 11
天
01到31(受MONTH和YEAR的值限制,根据地区日历规则)
任何非零整数
小时
00 至 23
0 至 23
00 至 59
0 至 59
00 到 59.9(n),其中 9(n) 是以小数秒为单位的时间精度,9(n) 部分不适用于 DATE。
0 到 59.9(n),其中 9(n) 是以小数秒为单位的精度
-12 到 14(范围适应夏令时变化),不适用于 DATE 或 .
不适用
00 到 59,不适用于 DATE 或 .
不适用
不适用于 DATE 或 .
不适用
不适用于 DATE 或 .
不适用
日期时间数据类型和函数
以下是数据类型 -
日期
它以字符和数字数据类型存储日期和时间信息。 它由世纪、年、月、日、时、分、秒等信息组成。 它被指定为 -
它是 DATE 数据类型的扩展。 它存储 DATE 数据类型的年、月、日以及小时、分钟和秒值。 这对于存储精确的时间值很有用。
有时区
它是包含时区名称或时区偏移量的变体。 时区偏移是当地时间与 UTC 之间的时差(以小时和分钟为单位)。 此数据类型对于收集和评估跨地理区域的日期信息非常有用。
与当地时区
这是另一种变体,其值包含时区偏移量。 下表提供了日期时间函数(其中,x 具有日期时间值) -
编号 功能名称 说明
(x,y);
将 y 个月添加到 x。
(X);
返回该月的最后一天。
(x,y);
返回 x 和 y 之间的月数。
(x,天);
返回 x 之后一天的日期时间。
;
返回用户指定时区的时间/日期值。
ROUND(x [, 单位]);
圆 x
();
返回当前日期和时间。
TRUNC(x [, 单位]);
截断 x。
时间戳函数(其中 x 具有时间戳值)-
编号 功能名称 说明
();
返回包含当前会话时间和会话时区的WITH TIME ZONE。
({ 年/月/日/小时 // } / { / } / { } ) 来自 x)
从 x 中提取并返回年、月、日、小时、分钟、秒或时区。
(X, );
将 x 和指定时区转换为WITH。
();
返回包含会话时区中本地时间的时间。
();
返回包含当前数据库时间和数据库时区的WITH TIME ZONE。
(X);
转换WITH x 以包含UTC 格式的日期和时间。
(X, []);
将字符串 x 转换为 .
(X, []);
将字符串 x 转换为WITH。
例子
以下代码片段说明了上述函数的用法 -
实施例1
SQL> SELECT SYSDATE FROM DUAL;
SYSDATE
--------------
07-11月-17
SQL
实施例2
SQL> SELECT TO_CHAR(CURRENT_DATE, 'YYYY-MM-DD HH:MI:SS') FROM DUAL;
TO_CHAR(CURRENT_DAT
-------------------
2017-11-07 05:26:07
SQL
实施例3
SQL> SELECT ADD_MONTHS(SYSDATE, 5) FROM DUAL;
ADD_MONTHS(SYS
--------------
07-4月 -18
SQL
实施例4
SQL> SELECT LOCALTIMESTAMP FROM DUAL;
LOCALTIMESTAMP
---------------------------------------------------------------------------
07-11月-17 05.27.13.752000 上午
SQL
区间数据类型和函数
以下是区间数据类型 -
区间函数
号码功能说明
(X, );
将数字 x 转换为 DAY TO。
(X, );
将数字 x 转换为 YEAR TO MONTH。
(X);
将字符串 x 转换为 DAY TO。
(X);
将字符串 x 转换为 YEAR TO MONTH。