PL / SQL - 日期和时间

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

  • 日期时间数据类型

  • 区间数据类型

日期时间数据类型为 :

  • DATE

  • TIMESTAMP

  • TIMESTAMP WITH TIME ZONE

  • TIMESTAMP WITH LOCAL TIME ZONE

Interval数据类型为 :

  • INTERVAL每年至月

  • 间隔日至第二天

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

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

字段名称有效的日期时间值有效间隔值
-  4712至9999 (不包括第0年)任何非零整数
MONTH01到120到11
DAY01到31(受MONTH和YEAR的值限制,根据语言环境的日历规则)任何非零整数
HOUR00到230到23
MINUTE00到590到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.不适用

日期时间数据类型和函数

以下是Datetime数据类型 :

DATE

它以字符和数字数据类型存储日期和时间信息.由世纪,年,月,日,小时,分钟和秒组成的信息.它被指定为 :

TIMESTAMP

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

TIMESTAMP WITH TIME ZONE

它是TIMESTAMP的变体,包括时区区域名称或时区偏移量.时区偏移量是差值(以小时为单位)当地时间和UTC之间的这种数据类型对于收集和评估跨地理区域的日期信息很有用.

TIMESTAMP与当地时间Z ONE

这是TIMESTAMP的另一个变体,其值包含时区偏移.

下表提供了Datetime函数(其中,x有日期时间值) :

S .No功能名称&描述
1

ADD_MONTHS(x,y);

y 个月添加到 x .

2

LAST_DAY(x);

返回该月的最后一天.

3

MONTHS_BETWEEN(x,y);

返回 x

4

NEXT_DAY(x,day);

x 之后返回下一个的日期时间.

5

NEW_TIME;

返回u指定的时区的时间/日期值ser.

6

ROUND(x [,unit]);

x .

7

SYSDATE();

返回当前日期时间.

8

TRUNC(x [,unit]);

截断 x .

时间戳功能(其中, x有一个时间戳值) :

S.No函数名称和描述
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 TIMEZONE x到包含UTC的日期和时间的TIMESTAMP.

7

TO_TIMESTAMP(x,[format]);

将字符串x转换为TIMESTAMP.

8

TO_TIMESTAMP_TZ(x,[format]);

将字符串x转换为TIMESTAMP WITH TIMEZONE.

示例

以下代码片段说明了上述功能的使用和减号;

示例1

 
 SELECT SYSDATE FROM DUAL;

输出 :

 
 08/31/2012 5:25:34 PM

示例2

 
 SELECT TO_CHAR(CURRENT_DATE,'DD-MM-YYYY HH:MI:SS')FROM DUAL;

输出 :

 
 31-08-2012 05 :26:14

示例3

 
 SELECT ADD_MONTHS(SYSDATE,5)FROM DUAL;

输出 :

 
 01/31/2013 5:26:31 PM

示例4

 
 SELECT LOCALTIMESTAMP FROM DUAL;

输出 :

 
 8/31/2012 5:26:55.347000 PM

区间数据类型和函数

以下是区间数据类型和减号;

  • IINTERVAL年到月和月;它使用YEAR和MONTH日期时间字段存储一段时间.

  • INTERVAL DAY TO SECOND : 它以天,小时,分钟和秒为单位存储一段时间.

区间函数

S.No功能名称&描述
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.