EXTRACT式
構文
extract_expression ::= EXTRACT "(" id
FROM expression
")"
セマンティクス
EXTRACT式は、タイムスタンプからコンポーネントを抽出します。具体的には、FROMキーワードの後の式は、最大で1つのタイムスタンプまたはNULLを返す必要があります。この式の結果がNULLまたは空の場合、EXTRACTの結果もそれぞれNULLまたは空になります。それ以外場合は、そのidで指定されたコンポーネントが返されます。このidは、次のキーワードのいずれかである必要があります。
- YEAR
- タイムスタンプの年を-6383から9999の範囲で返します。
- MONTH
- タイムスタンプの月を1から12の範囲で返します。
- DAY
- タイムスタンプの月の日付を1から31の範囲で返します。
- HOUR
- タイムスタンプの時間を0から23の範囲で返します。
- MINUTE
- タイムスタンプの分を0から59の範囲で返します。
- SECOND
- タイムスタンプの秒を0から59の範囲で返します。
- MILLISECOND
- タイムスタンプの小数秒(ミリ秒)を0から999の範囲で返します。
- MICROSECOND
- タイムスタンプの小数秒(マイクロ秒)を0から999999の範囲で返します。
- NANOSECOND
- タイムスタンプの小数秒(ナノ秒)を0から999999999の範囲で返します。
- WEEK
- 週が日曜日から始まり、最初の週にこの年の少なくとも1日が含まれる年内の週番号を1から54の範囲で返します。
- ISOWEEK
- IS0-8601に基づいて年内の週番号を返します。週は月曜日から始まり、最初の週はこの年の最低4日で、範囲は0から53です。
前述の各コンポーネントをタイムスタンプから抽出する特定の組込み関数があります。たとえば、EXTRACT(YEAR from expr)はyear(expr)と同等です。これらの関数および他の組込み関数については、組込み関数で説明しています。
例6-96 航空手荷物追跡アプリケーション・データから乗客の手荷物到着日時および到着地空港の詳細を表示するメッセージの作成
SELECT concat("Hi ",bag.fullname,", Please collect your bags from ",$station," airport on ",$t2,"/", $t3,"/", $t1," at ",$t4,":",$t5," Hrs") AS MESSAGE
FROM BaggageInfo bag, bag.bagInfo[0].bagArrivalDate AS $bagDate, bag.bagInfo[0].lastSeenStation AS $station,
EXTRACT(YEAR from (CAST($bagDate AS Timestamp(0)))) $t1,
EXTRACT(MONTH from (CAST($bagDate AS Timestamp(0)))) $t2,
EXTRACT(DAY from (CAST($bagDate AS Timestamp(0)))) $t3,
EXTRACT(HOUR from (CAST($bagDate AS Timestamp(0)))) $t4,
EXTRACT(MINUTE from (CAST($bagDate AS Timestamp(0)))) $t5
WHERE ticketNo = 1762344493810
説明: BaggageInfo
表のbagArrivalDate
フィールドには、受託手荷物が到着地空港に到着する予定の日付が格納されます。EXTRACT式を使用すると、指定した乗客のbagArrivalDate
フィールドから日付(日、月および年)および時間(時および分)を抽出できます。日付は、bagInfo
フィールドのJSONデータに文字列として格納されます。最初にCAST式を使用してbagArrivalDate
をタイムスタンプに変換してから、そのタイムスタンプから日、月および年などを抽出します。
メッセージとして表示するには、concat関数を使用します。
出力:
{"MESSAGE":"Hi Adam Phillips, Please collect your bags from MEL airport on 2/1/2019 at
16:13 Hrs"}