カテゴリ:

日付と時刻の関数

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> )
Copy
TIMESTAMP_LTZ_FROM_PARTS( <year>, <month>, <day>, <hour>, <minute>, <second> [, <nanosecond>] )
Copy
TIMESTAMP_NTZ_FROM_PARTS( <year>, <month>, <day>, <hour>, <minute>, <second> [, <nanosecond>] )

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

注釈

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

引数

必須:

year

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

month

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

day

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

hour

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

minute

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

second

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

date_exprtime_expr

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

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

  • TIMESTAMP_NTZ_FROM_PARTS

オプション:

nanoseconds

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

time_zone

タイムスタンプを作成するためにタイムゾーンとして使用する文字列式です( 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_NTZ)。

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

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';
Copy

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              |
+--------------------------------------------------+
Copy

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                               |
+-------------------------------------------------------------+
Copy

年、月、日、時間などではなく、日付と時刻で 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                                        |
+----------------------------------------------------------------------+
Copy

セッションのデフォルトのタイムゾーン(「米国/ニューヨーク」/-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             |
+-------------------------------------------------+
Copy

指定されたタイムゾーン(「米国/ロサンゼルス」/-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                                       |
+---------------------------------------------------------------------------+
Copy

通常の範囲外の値を処理(-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                  |
+------------------------------------------------+
Copy