返回介绍

PL/SQL 日期及时间 - PL/SQL 教程

发布于 2025-02-22 13:46:47 字数 4879 浏览 0 评论 0 收藏 0

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 整数
MONTH01 - 120 - 11
DAY01 - 31 (受 MONTH 和 YEAR 的数值,按日历的区域设置的规则)任何非 0 整数
HOUR00 - 230 - 23
MINUTE00 - 590 - 59
SECOND00 to 59.9(n), 其中,9(n)是时间小数秒精度 在 9(n)的部分是不适用 DATE。0 to 59.9(n), 其中,9(n)是区间小数秒精度
TIMEZONE_HOUR-12 - 14 (适应范围夏令时更改) DATE 或 TIMESTAMP 不适用。不适用
TIMEZONE_MINUTE00 - 59 DATE 或 TIMESTAMP 不适用。不适用
TIMEZONE_REGIONDATE 或 TIMESTAMP 不适用。不适用
TIMEZONE_ABBRDATE 或 TIMESTAMP 不适用。不适用

日期时间数据类型和函数

下面是日期时间数据类型:

  • DATE - 它存储在字符和数字数据类型的日期和时间信息。它是由上世纪,年,月,日,时,分,秒的信息。它被指定为:
  • TIMESTAMP - 它是日期数据类型的扩展。它的年,月,日的日期数据类型的存储,以及小时,分钟和秒值。它是用于存储精确的时间值有用。
  • TIMESTAMP WITH TIME ZONE - 它是时间戳的变体,其中包括一个时区区域名称或时区中它的值偏移。时区偏移量是本地的时间和 UTC 之间的差值(以小时和分钟)。此数据类型是用于收集和计算跨越地理区域的最新信息有用。
  • TIMESTAMP WITH LOCAL TIME ZONE - 它是时间戳(TIMESTAMP ) 的另一种变型,其中包括一个时区中它的值偏移。

下表列出了日期时间函数(其中,x 有日期时间值):

S.N函数名称 & 描述
1ADD_MONTHS(x, y); 增加 y 个月到 x
2LAST_DAY(x); 返回该月的最后一天
3MONTHS_BETWEEN(x, y); 返回 x 和 y 之间的月数
4NEXT_DAY(x, day); 返回 x 后第二天的日期时间
5NEW_TIME; 返回从由用户指定的一个时区的时间/天的值
6ROUND(x [, unit]); x 舍入;
7SYSDATE(); 返回当前日期时间。
8TRUNC(x [, unit]); 截断 x

时间戳函数(其中,x 是一个时间戳值):

S.N函数名称 & 描述
1CURRENT_TIMESTAMP(); 返回包含当前会话时间以及会话时区的时区中的时间戳( TIMESTAMP WITH TIME ZONE)
2EXTRACT({ YEAR | MONTH | DAY | HOUR | MINUTE | SECOND } | { TIMEZONE_HOUR | TIMEZONE_MINUTE } | { TIMEZONE_REGION | } TIMEZONE_ABBR ) FROM x) 从 x 提取并返回年,月,日,时,分,秒,或时间;
3FROM_TZ(x, time_zone); 通过 TIME_ZONE 指定 WITH TIMEZONE 一个 TIMESTAMP 时间戳 x 和时区转换
4LOCALTIMESTAMP(); 返回包含在会话时区的本地时间时间戳
5SYSTIMESTAMP(); 返回含有当前数据库的时间以及数据库时区的时区中的时间戳(TIMESTAMP WITH TIME ZONE)
6SYS_EXTRACT_UTC(x); WITH TIMEZONE X 的 TIMESTAMP 转换为包含日期和时间 UTC 时间戳
7TO_TIMESTAMP(x, [format]); 将字符串 x 转换为一个 TIMESTAMP
8TO_TIMESTAMP_TZ(x, [format]); 字符串 x 转换到 WITH TIMEZONE 时间戳

示例:

下面的代码段示出了使用上述函数功能:

SELECT SYSDATE FROM DUAL;

输出:

08/31/2014 5:25:34 PM
SELECT TO_CHAR(CURRENT_DATE, 'DD-MM-YYYY HH:MI:SS') FROM DUAL;

输出:

31-08-2014 05:26:14
SELECT ADD_MONTHS(SYSDATE, 5) FROM DUAL;

输出:

01/31/2014 5:26:31 PM
SELECT LOCALTIMESTAMP FROM DUAL;

输出:

8/31/2014 5:26:55.347000 PM

间隔数据类型和函数

以下是间隔数据类型:

  • INTERVAL YEAR TO MONTH - 它存储了一段时间的使用年份和月份日期时间字段
  • INTERVAL DAY TO SECOND - 它存储了一段时间中的天,小时,分钟和秒

间隔函数:

S.N函数名称 & 描述
1NUMTODSINTERVAL(x, interval_unit); 整数 x 转换为一个间隔(DAY TO SECOND)
2NUMTOYMINTERVAL(x, interval_unit); x 到时间间隔(YEAR TO MONTH)数的转换
3TO_DSINTERVAL(x); 将字符串 x 时间间隔(DAY TO SECOND)到秒转换
4TO_YMINTERVAL(x); 将字符串 x 时间间隔(YEAR TO MONTH)转换为整数

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文