- カテゴリ:
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に設定されている場合にのみ有効です。
引数¶
必須:
year
タイムスタンプを作成するための年として使用する整数式です。
month
タイムスタンプを作成するための月として使用する整数式です。1月は
1
、12月は12
として表されます。day
タイムスタンプを作成するための日として使用する整数式です。通常は
1
~31
の範囲です。hour
タイムスタンプを作成するための時間として使用する整数式です。通常は
0
-23
の範囲です。minute
タイムスタンプを作成するための分として使用する整数式です。通常は
0
~59
の範囲です。second
タイムスタンプを作成するための秒として使用する整数式です。通常は
0
~59
の範囲です。date_expr
、time_expr
タイムスタンプの作成に使用する日付と時刻の式を指定します。
date_expr
はタイムスタンプの年、月、日を提供し、time_expr
はその日の時間、分、秒、ナノ秒を提供します。以下にのみ有効です。TIMESTAMP_FROM_PARTS (TIMESTAMP_TYPE_MAPPING セッションパラメーターが TIMESTAMP_NTZに設定されている場合)
TIMESTAMP_NTZ_FROM_PARTS
オプション:
nanoseconds
タイムスタンプを作成するためにナノ秒として使用する整数式です。通常は
0
~999999999
の範囲です。time_zone
タイムスタンプを作成するためにタイムゾーンとして使用する文字列式です(
America/Los_Angeles
など)。以下にのみ有効です。TIMESTAMP_FROM_PARTS (TIMESTAMP_TYPE_MAPPING セッションパラメーターが TIMESTAMP_TZに設定されている場合)
TIMESTAMP_TZ_FROM_PARTS
使用上の注意¶
TIMESTAMP_FROM_PARTS バリエーションは、一般的に「通常の」値範囲の値を処理するために使用されます(例:月
1
~12
、日1
~31
、時間0
~23
など)。ただし、これらの範囲外の値も処理できます。これにより、年の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';
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 | +----------------------------------------------------------------------+
セッションのデフォルトのタイムゾーン(「米国/ニューヨーク」/-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 | +-------------------------------------------------+
指定されたタイムゾーン(「米国/ロサンゼルス」/-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 | +------------------------------------------------+