カテゴリ:

日付と時刻の関数

TIMESTAMP_FROM_PARTS

個々の数値コンポーネントからタイムスタンプを作成します。有効なタイムゾーンがない場合、この関数を使用して日付式と時刻式からタイムスタンプを作成できます。

エイリアス:

TIMESTAMPFROMPARTS

バリエーション(およびエイリアス):

TIMESTAMP_LTZ_FROM_PARTS , TIMESTAMPLTZFROMPARTS

TIMESTAMP_NTZ_FROM_PARTS , TIMESTAMPNTZFROMPARTS

TIMESTAMP_TZ_FROM_PARTS , TIMESTAMPTZFROMPARTS

構文

TIMESTAMP_FROM_PARTS( <year>, <month>, <day>, <hour>, <minute>, <second> [, <nanosecond> ] [, <time_zone> ] )

TIMESTAMP_FROM_PARTS( <date_expr>, <time_expr> )
TIMESTAMP_LTZ_FROM_PARTS( <year>, <month>, <day>, <hour>, <minute>, <second> [, <nanosecond>] )
TIMESTAMP_NTZ_FROM_PARTS( <year>, <month>, <day>, <hour>, <minute>, <second> [, <nanosecond>] )

TIMESTAMP_NTZ_FROM_PARTS( <date_expr>, <time_expr> )
TIMESTAMP_TZ_FROM_PARTS( <year>, <month>, <day>, <hour>, <minute>, <second> [, <nanosecond>] [, <time_zone>] )

注釈

TIMESTAMP_FROM_PARTS の日付と時刻式バージョンは、 TIMESTAMP_TYPE_MAPPING セッションパラメーターが TIMESTAMP_NTZに設定されている場合にのみ有効です。

引数

必須:

タイムスタンプを作成するための年として使用する整数式です。

タイムスタンプを作成するための月として使用する整数式です。1月は 1、12月は 12 として表されます。

タイムスタンプを作成するための日として使用する整数式です。通常は 131 の範囲です。

タイムスタンプを作成するための時間として使用する整数式です。通常は 0 - 23 の範囲です。

タイムスタンプを作成するための分として使用する整数式です。通常は 059 の範囲です。

タイムスタンプを作成するための秒として使用する整数式です。通常は 059 の範囲です。

日付式時刻式

タイムスタンプの作成に使用する日付と時刻の式を指定します。 日付式 はタイムスタンプの年、月、日を提供し、 時刻式 はその日の時間、分、秒、ナノ秒を提供します。以下にのみ有効です。

  • TIMESTAMP_FROM_PARTS (TIMESTAMP_TYPE_MAPPING セッションパラメーターが TIMESTAMP_NTZに設定されている場合)

  • TIMESTAMP_NTZ_FROM_PARTS

オプション:

ナノ秒

タイムスタンプを作成するためにナノ秒として使用する整数式です。通常は 0999999999 の範囲です。

タイムゾーン

タイムスタンプを作成するためにタイムゾーンとして使用する文字列式です( America/Los_Angeles など)。以下にのみ有効です。

  • TIMESTAMP_FROM_PARTS (TIMESTAMP_TYPE_MAPPING セッションパラメーターが TIMESTAMP_TZに設定されている場合)

  • TIMESTAMP_TZ_FROM_PARTS

使用上の注意

  • TIMESTAMP_FROM_PARTS バリエーションは、一般的に「通常の」値範囲の値を処理するために使用されます(例:月 112、日 131、時間 023 など)。ただし、これらの範囲外の値も処理できます。これにより、年のN番目の日または1日のN番目の秒を選択できます。これは、一部の計算を簡素化するのに役立ちます。

  • TIMESTAMP_FROM_PARTS は、 TIMESTAMP_TYPE_MAPPING セッションパラメーターで指定されたバリエーションと同等です(デフォルトは TIMESTAMP_LTZ)。

出力形式とタイムゾーンを制御するセッション変数を設定します。

ALTER SESSION SET TIMESTAMP_OUTPUT_FORMAT='YYYY-MM-DD HH24:MI:SS.FF9 TZH:TZM';
ALTER SESSION SET TIMESTAMP_NTZ_OUTPUT_FORMAT='YYYY-MM-DD HH24:MI:SS.FF9 TZH:TZM';
ALTER SESSION SET TIMEZONE='America/New_York';

TIMESTAMP_LTZ_FROM_PARTS を使用:

SELECT TIMESTAMP_LTZ_FROM_PARTS(2013, 4, 5, 12, 00, 00);
+--------------------------------------------------+
| TIMESTAMP_LTZ_FROM_PARTS(2013, 4, 5, 12, 00, 00) |
|--------------------------------------------------|
| 2013-04-05 12:00:00.000000000 -0400              |
+--------------------------------------------------+

TIMESTAMP_NTZ_FROM_PARTS を使用:

select timestamp_ntz_from_parts(2013, 4, 5, 12, 00, 00, 987654321);
+-------------------------------------------------------------+
| TIMESTAMP_NTZ_FROM_PARTS(2013, 4, 5, 12, 00, 00, 987654321) |
|-------------------------------------------------------------|
| 2013-04-05 12:00:00.987654321                               |
+-------------------------------------------------------------+

年、月、日、時間などではなく、日付と時刻で TIMESTAMP_NTZ_FROM_PARTS を使用:

select timestamp_ntz_from_parts(to_date('2013-04-05'), to_time('12:00:00'));
+----------------------------------------------------------------------+
| TIMESTAMP_NTZ_FROM_PARTS(TO_DATE('2013-04-05'), TO_TIME('12:00:00')) |
|----------------------------------------------------------------------|
| 2013-04-05 12:00:00.000000000                                        |
+----------------------------------------------------------------------+

セッションのデフォルトのタイムゾーン('米国/New_York'/-0400)で TIMESTAMP_TZ_FROM_PARTS を使用:

select timestamp_tz_from_parts(2013, 4, 5, 12, 00, 00);
+-------------------------------------------------+
| TIMESTAMP_TZ_FROM_PARTS(2013, 4, 5, 12, 00, 00) |
|-------------------------------------------------|
| 2013-04-05 12:00:00.000000000 -0400             |
+-------------------------------------------------+

指定されたタイムゾーン('米国 /Los_Angeles'/-0700)で TIMESTAMP_TZ_FROM_PARTS を使用(ナノ秒引数として0を使用):

select timestamp_tz_from_parts(2013, 4, 5, 12, 00, 00, 0, 'America/Los_Angeles');
+---------------------------------------------------------------------------+
| TIMESTAMP_TZ_FROM_PARTS(2013, 4, 5, 12, 00, 00, 0, 'AMERICA/LOS_ANGELES') |
|---------------------------------------------------------------------------|
| 2013-04-05 12:00:00.000000000 -0700                                       |
+---------------------------------------------------------------------------+

通常の範囲外の値を処理(-3600秒を指定して1時間を引く):

select timestamp_from_parts(2013, 4, 5, 12, 0, -3600);
+------------------------------------------------+
| TIMESTAMP_FROM_PARTS(2013, 4, 5, 12, 0, -3600) |
|------------------------------------------------|
| 2013-04-05 11:00:00.000000000                  |
+------------------------------------------------+