Plsql-date-time

提供:Dev Guides
移動先:案内検索

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);

  • y* 月を *x* に追加します。
2

LAST_DAY(x);

月の最後の日を返します。

3

MONTHS_BETWEEN(x, y);

  • x* と *y* の間の月数を返します。
4

NEXT_DAY(x, day);

  • x* の後の次の_day_の日時を返します。
5

NEW_TIME;

ユーザーが指定したタイムゾーンから時刻/日の値を返します。

6

ROUND(x [, unit]);

  • x* を丸めます。
7

SYSDATE();

現在の日時を返します。

8

TRUNC(x [, unit]);

  • x* を切り捨てます。

タイムスタンプ関数(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
  • 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に変換します。