Plsql-date-time
PL/SQL-日付と時刻
この章では、PL/SQLの日付と時刻について説明します。 PL/SQLには日付と時刻に関連するデータ型の2つのクラスがあります-
- 日時データ型
- 間隔データ型
日時データ型は-
- DATE
- タイムスタンプ
- タイムゾーン付きタイムスタンプ
- 現地時間帯のタイムスタンプ
間隔データ型は-
- 間隔月
- 間隔日から2日
日時および間隔データ型のフィールド値
*datetime* および *interval* データ型は両方とも *fields* で構成されています。 これらのフィールドの値により、データ型の値が決まります。 次の表に、日付時刻と間隔のフィールドと可能な値を示します。
| Field Name | Valid Datetime Values | Valid Interval Values |
|---|---|---|
| YEAR | -4712 to 9999 (excluding year 0) | Any nonzero integer |
| MONTH | 01 to 12 | 0 to 11 |
| DAY | 01 to 31 (limited by the values of MONTH and YEAR, according to the rules of the calendar for the locale) | Any nonzero integer |
| HOUR | 00 to 23 | 0 to 23 |
| MINUTE | 00 to 59 | 0 to 59 |
| SECOND |
00 to 59.9(n), where 9(n) is the precision of time fractional seconds 9(n)部分はDATEには適用されません。 |
0 to 59.9(n), where 9(n) is the precision of interval fractional seconds |
| TIMEZONE_HOUR |
-12 to 14 (range accommodates daylight savings time changes) DATEまたはTIMESTAMPには適用されません。 |
Not applicable |
| TIMEZONE_MINUTE |
00 to 59 DATEまたはTIMESTAMPには適用されません。 |
Not applicable |
| TIMEZONE_REGION | Not applicable for DATE or TIMESTAMP. | Not applicable |
| TIMEZONE_ABBR | Not applicable for DATE or TIMESTAMP. | Not applicable |
日時のデータ型と関数
以下は、日時データ型です-
DATE
文字と数字の両方のデータ型で日付と時刻の情報を保存します。 世紀、年、月、日付、時、分、秒に関する情報で構成されています。 次のように指定されます-
タイムスタンプ
これはDATEデータ型の拡張です。 DATEデータ型の年、月、日、および時、分、秒の値を保存します。 正確な時間値を保存するのに便利です。
タイムゾーン付きタイムスタンプ
これは、タイムゾーン地域名またはタイムゾーンオフセットを値に含むTIMESTAMPのバリアントです。 タイムゾーンオフセットは、現地時間とUTCの差(時間と分)です。 このデータ型は、地理的領域全体で日付情報を収集および評価するのに役立ちます。
現地時間帯のタイムスタンプ
値にタイムゾーンオフセットを含むTIMESTAMPの別のバリアントです。
次の表は、日時関数を提供します(xは日時値を持ちます)-
| S.No | Function Name & Description |
|---|---|
| 1 |
ADD_MONTHS(x, y);
|
| 2 |
LAST_DAY(x); 月の最後の日を返します。 |
| 3 |
MONTHS_BETWEEN(x, y);
|
| 4 |
NEXT_DAY(x, day);
|
| 5 |
NEW_TIME; ユーザーが指定したタイムゾーンから時刻/日の値を返します。 |
| 6 |
ROUND(x [, unit]);
|
| 7 |
SYSDATE(); 現在の日時を返します。 |
| 8 |
TRUNC(x [, unit]);
|
タイムスタンプ関数(xはタイムスタンプ値を持ちます)-
| S.No | Function Name & Description |
|---|---|
| 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 WITH TIMEZONE xをUTCの日付と時刻を含むTIMESTAMPに変換します。 |
7 |
|
TO_TIMESTAMP(x, [format]); 文字列xをTIMESTAMPに変換します。 |
8 |
例
次のコードスニペットは、上記の関数の使用を示しています-
例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 TO MONTH-YEARおよびMONTH日時フィールドを使用して期間を保存します。 *INTERVAL DAY TO SECOND-日、時間、分、秒の観点から一定期間を保存します。
インターバル関数
| S.No | Function Name & Description |
|---|---|
| 1 |
数値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に変換します。 |