日付と時刻の値の組立て

EQLには、時刻、日付、または期間を表すタイムスタンプを、式を使用して組み立てるための関数があります。

その式が文字列の場合は、所定の形式であることが必要です。その形式が無効であるか、値が範囲外の場合は、結果はNULLになります。

関数 説明 形式
TO_TIME 時刻を表すタイムスタンプを組み立てます。

<TimeStringFormat> ::= hh:mm:ss[.sss]((+|-) hh:mm |Z)

TO_DATETIME 日付と時刻を表すタイムスタンプを組み立てます。 この関数の文字列インタフェース、日付のみ数値インタフェースおよび日時数値インタフェースの構文は、この後の項を参照してください。
TO_DURATION 期間を表すタイムスタンプを組み立てます。 <DurationStringFormat> ::=

[-]P[<Days>][T(<Hours>[<Minutes>}[<Seconds>]|

<Minutes>[<Seconds>]|

<Seconds>)]

<Days> ::= <Integer>D

<Hours> ::= <Integer>H

<Minutes> ::= <Integer>M

<Seconds> ::= <Integer>[.<Integer>]S

上の「形式」列に示したように、TO_TIMETO_DATETIMEはタイムゾーン・オフセットを受け取ります。ただし、EQLではオフセット値は保存されません。かわりに、値をGMTタイムゾーンに正規化したものが保存されます。

次の表に、様々な日付と時刻の式の出力を示します。
正規化後の値
TO_DATETIME('2016-07-21T16:00:00.000+02:00') 2016-07-21T14:00:00.000Z
TO_DATETIME('2016-07-31T20:00:00.000-06:00') 2016-08-01T02:00:00.000Z
TO_DATETIME('2016-06-15T20:00:00.000Z') 2016-06-15T20:00:00.000Z
TO_TIME('23:00:00.000+03:00') 20:00:00.000Z
TO_TIME('15:00:00.000-10:00') 01:00:00.000Z

TO_DATETIMEの形式

この関数の単一引数文字列インタフェースは次のとおりです。
TO_DATETIME(<DateTimeString>)
ここで、
<DateTimeString> ::= [-]YYYY-MM-DDT<TimeStringFormat>

文字列インタフェースの3つの例が前述の表にあります。

数値インタフェースのシグネチャは次のとおりです。
TO_DATETIME(<Year>, <Month>, <Day>)

TO_DATETIME(<Year>, <Month>, <Day>, <Hour>, <Minute>, <Second>, <Millisecond>)
引数はすべて整数です。

最初のシグネチャでは、時刻引数は0で埋められます。どちらのシグネチャも、タイムゾーンはUTCであると見なされます。タイムゾーン情報が存在する場合は、次の例に示すように期間(TO_DURATION)とタイムゾーン(TO_TZ)のコンストラクトを使用できます。

数値インタフェースのシグネチャの例は次のとおりです。
TO_DATETIME(2016, 7, 22)

TO_DATETIME(2016, 7, 22, 23, 15, 50, 500)

TO_DATETIME(2016, 7, 22, 23, 15, 50, 500) + TO_DURATION(1000)

TO_TZ(TO_DATETIME(2016, 7, 22, 23, 15, 50, 500), 'America/New_York')