PL / SQL-日付と時刻
この章では、PL / SQLの日付と時刻について説明します。PL / SQLには、日付と時刻に関連するデータ型の2つのクラスがあります。
- 日時データ型
- 間隔データ型
日時のデータ型は次のとおりです。
- DATE
- TIMESTAMP
- タイムゾーン付きのタイムスタンプ
- ローカルタイムゾーンのタイムスタンプ
間隔のデータ型は次のとおりです。
- 年から月までの間隔
- 2番目の間隔日
日時および間隔データ型のフィールド値
どちらも datetime そして interval データ型は次のもので構成されます fields。これらのフィールドの値は、データ型の値を決定します。次の表に、フィールドと、日時および間隔の可能な値を示します。
フィールド名 | 有効な日時値 | 有効な間隔値 |
---|---|---|
年 | -4712から9999(0年を除く) | ゼロ以外の整数 |
月 | 01から12 | 0から11 |
日 | 01から31(ロケールのカレンダーの規則に従って、MONTHとYEARの値によって制限されます) | ゼロ以外の整数 |
時間 | 00から23 | 0から23 |
分 | 00から59 | 0から59 |
2番目 | 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には適用されません。 | 適用できません |
日時のデータ型と関数
日時のデータ型は次のとおりです-
日付
文字と数値の両方のデータ型で日付と時刻の情報を格納します。世紀、年、月、日付、時、分、秒の情報で構成されています。−として指定されます
タイムスタンプ
これは、DATEデータ型の拡張です。DATEデータ型の年、月、日を、時、分、秒の値とともに格納します。正確な時間値を保存するのに役立ちます。
タイムゾーン付きのタイムスタンプ
これは、タイムゾーン領域名またはタイムゾーンオフセットを値に含むTIMESTAMPのバリアントです。タイムゾーンオフセットは、現地時間とUTCの差(時間と分)です。このデータ型は、地理的地域全体の日付情報を収集および評価するのに役立ちます。
ローカルタイムゾーンのタイムスタンプ
これは、値にタイムゾーンオフセットを含むTIMESTAMPの別のバリアントです。
次の表に、日時関数を示します(ここで、xは日時値です)-
S.No | 関数名と説明 |
---|---|
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.No | 関数名と説明 |
---|---|
1 | CURRENT_TIMESTAMP(); 現在のセッション時刻とセッションタイムゾーンを含むTIMESTAMPWITH TIMEZONEを返します。 |
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); TIMESTAMPxとtime_zoneで指定されたタイムゾーンをTIMESTAMPWITHTIMEZONEに変換します。 |
4 | LOCALTIMESTAMP(); セッションタイムゾーンの現地時間を含むTIMESTAMPを返します。 |
5 | SYSTIMESTAMP(); 現在のデータベース時刻とデータベースタイムゾーンを含むTIMESTAMPWITH TIMEZONEを返します。 |
6 | SYS_EXTRACT_UTC(x); TIMESTAMP WITH TIMEZONE xを、UTCでの日付と時刻を含むTIMESTAMPに変換します。 |
7 | TO_TIMESTAMP(x, [format]); 文字列xをTIMESTAMPに変換します。 |
8 | TO_TIMESTAMP_TZ(x, [format]); 文字列xをTIMESTAMPWITHTIMEZONEに変換します。 |
例
次のコードスニペットは、上記の関数の使用法を示しています-
Example 1
SELECT SYSDATE FROM DUAL;
Output −
08/31/2012 5:25:34 PM
Example 2
SELECT TO_CHAR(CURRENT_DATE, 'DD-MM-YYYY HH:MI:SS') FROM DUAL;
Output −
31-08-2012 05:26:14
Example 3
SELECT ADD_MONTHS(SYSDATE, 5) FROM DUAL;
Output −
01/31/2013 5:26:31 PM
Example 4
SELECT LOCALTIMESTAMP FROM DUAL;
Output −
8/31/2012 5:26:55.347000 PM
区間データ型と関数
間隔のデータ型は次のとおりです-
IINTERVAL YEAR TOMONTH-YEARおよびMONTH日時フィールドを使用して期間を格納します。
INTERVAL DAY TO SECOND-日、時間、分、秒で期間を保存します。
区間関数
S.No | 関数名と説明 |
---|---|
1 | NUMTODSINTERVAL(x, interval_unit); 数値xをINTERVALDAY TOSECONDに変換します。 |
2 | NUMTOYMINTERVAL(x, interval_unit); 数値xをINTERVALYEAR TOMONTHに変換します。 |
3 | TO_DSINTERVAL(x); 文字列xをINTERVALDAY TOSECONDに変換します。 |
4 | TO_YMINTERVAL(x); 文字列xをINTERVALYEAR TOMONTHに変換します。 |