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_TIMEとTO_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(<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')