PL/SQL日期及时间

在本章中,我们将讨论PL/SQL中的日期和时间。 PL/SQL中有两种与日期和时间相关的数据类型 –

  • 日期时间数据类型
  • 间隔数据类型

日期时间(Datetime)数据类型是 –

  • DATE
  • TIMESTAMP
  • TIMESTAMP WITH TIME ZONE
  • TIMESTAMP WITH LOCAL TIME ZONE

间隔数据类型是 –

  • INTERVAL YEAR TO MONTH
  • INTERVAL DAY TO SECOND

日期时间和间隔数据类型的字段值

日期时间和时间间隔数据类型都由字段组成。这些字段的值决定了数据类型的值。下表列出了日期时间和间隔的字段及其可能的值。

字段名称有效的日期时间值有效的区间值
YEAR-47129999(不包括0年)任何四位非零整数
MONTH0112011
DAY0131(受MONTHYEAR的值限制,根据地区的日历规则)任何非零整数
HOUR0023023
MINUTE0059059
SECOND0059.9(n),其中9(n)是时间小数秒的精确度,9(n)部分不适用于DATE059.9(n),其中9(n)是间隔小数秒的精确度
TIMEZONE_HOUR-1214(范围适应夏时制的变化),不适用于DATETIMESTAMP不适用
TIMEZONE_MINUTE0059,不适用于DATETIMESTAMP不适用
TIMEZONE_REGION不适用于DATETIMESTAMP不适用
TIMEZONE_ABBR不适用于DATETIMESTAMP不适用

日期时间数据类型和函数

以下是Datetime数据类型 –

DATE

它以字符和数字数据类型存储日期和时间信息。它由世纪,年,月,日,时,分,秒等信息组成。它被指定为 –

TIMESTAMP

它是DATE数据类型的扩展。它存储DATE数据类型的年份,月份和日期以及小时,分钟和秒值。这对于存储精确的时间值非常有用。

TIMESTAMP WITH TIME ZONE

它是TIMESTAMP的一个变体,其中包含时区名称或时区偏移量。时区偏移量是本地时间与UTC之间的时差(小时和分钟)。此数据类型对于收集和评估跨地理区域的日期信息非常有用。

TIMESTAMP WITH LOCAL TIME ZONE

它是TIMESTAMP的另一个变体,它的值包括一个时区偏移量。下表提供了日期时间函数(其中,x具有日期时间值) –

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

时间戳函数(其中,x有时间戳值) –

编号函数名称描述
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);TIMESTAMP xtime_zone指定的时区转换为TIMESTAMP WITH TIMEZONE
4LOCALTIMESTAMP();返回包含会话时区中本地时间的TIMESTAMP
5SYSTIMESTAMP();返回包含当前数据库时间的TIMESTAMP WITH TIME ZONE以及数据库时区。
6SYS_EXTRACT_UTC(x);TIMESTAMP WITH TIMEZONE x转换为包含UTC中的日期和时间的TIMESTAMP
7TO_TIMESTAMP(x, [format]);将字符串x转换为TIMESTAMP
8TO_TIMESTAMP_TZ(x, [format]);将字符串x转换为TIMESTAMP WITH TIMEZONE

例子

以下代码片段说明了上述函数的使用 –

示例1

SQL> SELECT SYSDATE FROM DUAL;

SYSDATE
--------------
07-11月-17

示例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

示例3

SQL> SELECT ADD_MONTHS(SYSDATE, 5) FROM DUAL;

ADD_MONTHS(SYS
--------------
07-4月 -18

示例4

SQL> SELECT LOCALTIMESTAMP FROM DUAL;

LOCALTIMESTAMP
---------------------------------------------------------------------------
07-11月-17 05.27.13.752000 上午

区间数据类型和函数

以下是区间数据类型 –

  • INTERVAL YEAR TO MONTH – 它使用YEARMONTH日期时间字段存储一段时间。第二天至第二天 – 它以天,小时,分钟和秒存储一段时间。
  • INTERVAL DAY TO SECOND – 它以天,小时,分钟和秒的形式存储一段时间。

区间函数

编号函数描述
1NUMTODSINTERVAL(x, interval_unit);将数字x转换为INTERVAL DAY TO SECOND
2NUMTOYMINTERVAL(x, interval_unit);将数字x转换为INTERVAL YEAR TO MONTH
3TO_DSINTERVAL(x);将字符串x转换为INTERVAL DAY TO SECOND
4TO_YMINTERVAL(x);将字符串x转换为INTERVAL YEAR TO MONTH
        原文作者:PL/SQL教程
        原文地址: https://www.yiibai.com/plsql/plsql_date_time.html
        本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
    点赞