PL / SQL日期和时间
PL / SQL提供了两个班的日期和时间相关的数据类型:
日期时间数据类型
间隔数据类型
datetime数据类型有:
日期
TIMESTAMP
TIMESTAMP WITH TIME ZONE
WITH LOCAL TIME ZONE TIMESTAMP
该区间的数据类型是:
INTERVAL YEAR TO MONTH
INTERVAL DAY TO SECOND
字段值datetime和间隔数据类型
这两个日期时间和间隔数据类型由字段 。这些字段的值决定了数据类型的值。下表列出了时间和间隔的字段及其可能的值。
| 字段名称 | 有效日期时间值 | 有效的时间间隔值 |
|---|---|---|
| 年 | -4712〜9999(不含一年0) | 任何非零整数 |
| 月 | 01到12 | 0至11 |
| 天 | 01到31(按年份和月份的数值限制,根据日历区域设置的规则) | 任何非零整数 |
| 小时 | 00〜23 | 0到23 |
| 分钟 | 00〜59 | 0到59 |
| 第二 | 00至59.9(n),其中9(n)是时间小数秒精度 9(n)的部分不适用日期。 | 0至59.9(n),其中9(n)是间隔小数秒精度 |
| TIMEZONE_HOUR | -12到14(范围适应夏令时的变化) 不适用于日期或时间戳。 | 不适用 |
| TIMEZONE_MINUTE | 00〜59 不适用于日期或时间戳。 | 不适用 |
| TIMEZONE_REGION | 不适用于日期或时间戳。 | 不适用 |
| TIMEZONE_ABBR | 不适用于日期或时间戳。 | 不适用 |
日期时间数据类型和函数
下面是日期时间数据类型:
日期 -它存储在字符和数字数据类型的日期和时间信息。它是由上世纪,年,月,日,小时,分钟和秒的信息。它被规定为:
时间戳 -它是日期数据类型的扩展。它存储了年,月,和日期数据类型的天,小时,分钟和秒值一起。它是用于存储精确的时间值是有用的。
WITH TIME ZONE TIMESTAMP -这是TIMESTAMP的变体,其中包括一个时区的区域名称或时区的偏移值。时区偏移量是本地时间和UTC之间的差值(以小时和分钟)。此数据类型是收集和评估不同地理区域的最新信息是有用的。
WITH LOCAL TIME ZONE TIMESTAMP -这是TIMESTAMP的另一个变种,其中包括一个时区的偏移值。
下表提供了日期时间函数(其中,x有日期时间值):
| SN | 功能名称和说明 |
|---|---|
| 1 | ADD_MONTHS(X,Y); Ÿ添加月至x。 |
| 2 | LAST_DAY(X); 返回该月的最后一天。 |
| 3 | MONTHS_BETWEEN(X,Y); 返回x和y之间的月数。 |
| 4 | NEXT_DAY(X,日); 返回x之后, 第二天的日期时间。 |
| 五 | NEW_TIME; 返回由用户指定的一个时区的时间/天的值。 |
| 6 | ROUND(X [,单位]); 将x; |
| 7 | SYSDATE(); 返回当前日期时间。 |
| 8 | TRUNC(X [,单位]); 截断的X. |
时间戳功能(其中,x具有时间戳值):
| SN | 功能名称和说明 |
|---|---|
| 1 | CURRENT_TIMESTAMP(); 返回包含当前会话时间和会话时区沿时区中的时间戳。 |
| 2 | EXTRACT({YEAR | MONTH | DAY | HOUR | MINUTE | SECOND} | {TIMEZONE_HOUR | TIMEZONE_MINUTE} | {TIMEZONE_REGION |} TIMEZONE_ABBR)从X) 提取并返回一年,月,日,时,分,秒,或时间从X区; |
| 3 | FROM_TZ(X,TIME_ZONE); 通过TIME_ZONE指定WITH TIMEZONE一个TIMESTAMP时间戳x和时区转换。 |
| 4 | LOCALTIMESTAMP(); 返回包含在会话时区的本地时间戳记。 |
| 五 | SYSTIMESTAMP(); 返回包含当前数据库时,与数据库的时区以及时区中的时间戳。 |
| 6 | SYS_EXTRACT_UTC(X); WITH TIMEZONE x中的TIMESTAMP转换为包含UTC日期和时间的时间戳。 |
| 7 | TO_TIMESTAMP(X,[格式]); 将字符串x转换为一个TIMESTAMP。 |
| 8 | TO_TIMESTAMP_TZ(X,[格式]); 该字符串x到WITH TIMEZONE值转换为时间戳。 |
例子:
下面的代码段示出了使用上述功能:
SELECT SYSDATE FROM DUAL;
输出:
08/31/2012 5:25:34 PM
SELECT TO_CHAR(CURRENT_DATE, 'DD-MM-YYYY HH:MI:SS') FROM DUAL;
输出:
31-08-2012 5点26分14秒
SELECT ADD_MONTHS(SYSDATE, 5) FROM DUAL;
输出:
2013年1月31日下午5时26分31秒
SELECT LOCALTIMESTAMP FROM DUAL;
输出:
8/31/2012 5:26:55.347000 PM
间隔数据类型和函数
以下是间隔的数据类型:
INTERVAL YEAR TO MONTH - 它存储使用年份和月份日期时间字段的一段时间。
INTERVAL DAY TO SECOND - 它存储在天,小时,分钟和秒来一段时间。
间隔功能:
| SN | 功能名称和说明 |
|---|---|
| 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转换。 |