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に変換します。