PL/SQL日期及時間
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整數 |
MONTH | 01 - 12 | 0 - 11 |
DAY | 01 - 31 (受MONTH和YEAR的數值,按日曆的區域設置的規則) | 任何非0整數 |
HOUR | 00 - 23 | 0 - 23 |
MINUTE | 00 - 59 | 0 - 59 |
SECOND |
00 to 59.9(n), 其中,9(n)是時間小數秒精度 在9(n)的部分是不適用DATE。 |
0 to 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不適用. | 不適用 |
日期時間數據類型和函數
下麵是日期時間數據類型:
-
DATE - 它存儲在字符和數字數據類型的日期和時間信息。它是由上世紀,年,月,日,時,分,秒的信息。它被指定為:
-
TIMESTAMP - 它是日期數據類型的擴展。它的年,月,日的日期數據類型的存儲,以及小時,分鐘和秒值。它是用於存儲精確的時間值有用。
-
TIMESTAMP WITH TIME ZONE - 它是時間戳的變體,其中包括一個時區區域名稱或時區中它的值偏移。時區偏移量是本地的時間和UTC之間的差值(以小時和分鐘)。此數據類型是用於收集和計算跨越地理區域的最新信息有用。
-
TIMESTAMP WITH LOCAL TIME ZONE - 它是時間戳(TIMESTAMP )的另一種變型,其中包括一個時區中它的值偏移。
下表列出了日期時間函數(其中,x有日期時間值):
S.N | 函數名稱 & 描述 |
---|---|
1 |
ADD_MONTHS(x, y); 增加y個月到x |
2 |
LAST_DAY(x); 返回該月的最後一天 |
3 |
MONTHS_BETWEEN(x, y); 返回x和y之間的月數 |
4 |
NEXT_DAY(x, day); 返回x後第二天的日期時間 |
5 |
NEW_TIME; 返回從由用戶指定的一個時區的時間/天的值 |
6 |
ROUND(x [, unit]); x舍入; |
7 |
SYSDATE(); 返回當前日期時間。 |
8 |
TRUNC(x [, unit]); 截斷x |
時間戳函數(其中,x是一個時間戳值):
S.N | 函數名稱 & 描述 |
---|---|
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); 通過TIME_ZONE指定WITH TIMEZONE一個TIMESTAMP時間戳x和時區轉換 |
4 |
LOCALTIMESTAMP(); 返回包含在會話時區的本地時間時間戳 |
5 |
SYSTIMESTAMP(); 返回含有當前數據庫的時間以及數據庫時區的時區中的時間戳(TIMESTAMP WITH TIME ZONE) |
6 |
SYS_EXTRACT_UTC(x); WITH TIMEZONE X的TIMESTAMP轉換為包含日期和時間UTC時間戳 |
7 |
TO_TIMESTAMP(x, [format]); 將字符串x轉換為一個TIMESTAMP |
8 |
TO_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 | 函數名稱 & 描述 |
---|---|
1 |
NUMTODSINTERVAL(x, interval_unit); 整數x轉換為一個間隔(DAY TO SECOND) |
2 |
NUMTOYMINTERVAL(x, interval_unit); x到時間間隔(YEAR TO MONTH)數的轉換 |
3 |
TO_DSINTERVAL(x); 將字符串x時間間隔(DAY TO SECOND)到秒轉換 |
4 |
TO_YMINTERVAL(x); 將字符串x時間間隔(YEAR TO MONTH)轉換為整數 |