タイムスタンプ索引抽出関数

これらの関数は、タイムスタンプから対応する四半期/週/月/年索引を返します。timestampは、関数の引数として指定する必要があります。

構文:

INTEGER quarter(<timestamp>)

INTEGER day_of_week(<timestamp>)

INTEGER day_of_month(<timestamp>)

INTEGER day_of_year(<timestamp>)
セマンティクス:
  • timestamp: timestamp引数は、TIMESTAMP値またはTIMESTAMP型にキャストできる値を取ります。サポートされていないタイムスタンプ形式を指定すると、関数はエラーを返します。
  • 戻り値: INTEGER

    この関数は、ISO-8601カレンダ・システムに従います。

    表12-5 タイムスタンプ索引抽出関数

    関数 戻り値
    quarter

    1から4

    1は四半期1を示し、4は四半期4を示します。

    day_of_week

    1から7

    1は週の初日(月曜日)を示し、7は週の最終日(日曜日)です。

    day_of_month

    1から31

    1は月の初日を示し、31は月の最終日です。

    day_of_year

    1から366

    1は年の最初の日を示し、366は年の最後の日です。

ノート:

これらの関数は、次の場合にNULLを返します。
  • timestamp引数がNULLに設定されている場合。
  • 入力timestampがTIMESTAMP型にキャスト可能でない場合。

例12-30 加入者がシリーズ内の特定のエピソードを視聴した四半期を出力する

SELECT quarter(show.acct_data.contentStreamed[1].seriesInfo[0].episodes[1].date) AS quarter 
FROM stream_acct show 
WHERE profile_name="AP"
出力:
{"quarter":1}

例12-31 指定されたタイムスタンプの曜日を特定する

SELECT day_of_week("2024-06-19") AS DAYVAL1, 
day_of_week(parse_to_timestamp('06/19/24', 'MM/dd/yy')) AS DAYVAL2 
FROM BaggageInfo 
WHERE ticketNo=1762344493810

説明: 問合せの2番目のタイムスタンプは、サポートされていない形式'06/19/24'であるため、それをparse_to_timestamp関数にラップして有効にします。

出力:
{
  "DAYVAL1" : 3,
  "DAYVAL2" : 3
}

例12-32 航空会社の手荷物追跡データから、フライト番号、手荷物到着日、および受託手荷物がMEL空港に到着する日を出力する

SELECT DISTINCT $b.flightLegs[].flightNo, 
$b.bagArrivalDate, 
day_of_week($b.bagArrivalDate) AS DAY 
FROM BaggageInfo bag, bag.bagInfo[0] AS $b
WHERE regex_like($b.routing,".*/MEL")

説明: day_of_week関数を使用して、bagArrivalDateフィールドのタイムスタンプ値に対応する日索引を特定します。

MEL空港の結果を表示するには、正規表現条件を使用して到着地空港のパターンを文字列"MEL"と照合します。

出力:
{"flightNo":["BM604","BM667"],"bagArrivalDate":"2019-02-25T20:15:00Z","DAY":1}
{"flightNo":["BM604","BM667"],"bagArrivalDate":"2019-02-04T10:08:00Z","DAY":1}
{"flightNo":["BM604","BM667"],"bagArrivalDate":"2019-02-16T16:13:00Z","DAY":6}
{"flightNo":["BM604","BM667"],"bagArrivalDate":"2019-02-01T16:13:00Z","DAY":5} 

例12-33 航空会社の手荷物追跡データから、SFO空港から出発するすべてのフライトについて、フライト番号、出発日、および月の何日目かを出力する

SELECT DISTINCT $f.flightNo AS FLIGHT, 
$f.flightDate AS DEPARTURE, 
day_of_month($f.flightDate) AS DAY
FROM BaggageInfo bag, bag.bagInfo[0].flightLegs[0] AS $f
WHERE $f.fltRouteSrc =any "SFO" 
出力:
{"FLIGHT":"BM318","DEPARTURE":"2019-02-02T12:00:00Z","DAY":2}
{"FLIGHT":"BM318","DEPARTURE":"2019-03-12T03:00:00Z","DAY":12}
{"FLIGHT":"BM572","DEPARTURE":"2019-03-02T05:00:00Z","DAY":2}
{"FLIGHT":"BM318","DEPARTURE":"2019-03-07T04:00:00Z","DAY":7}

例12-34 航空会社の手荷物追跡データから、フライト"BM114"の就航60日目に旅行した乗客を特定する

SELECT fullName, $f.fltRouteSrc AS BOARDING, 
$f.flightNo AS FLIGHT, 
$f.flightDate AS DEPARTURE
FROM BaggageInfo bag, bag.bagInfo[0].flightLegs[0] AS $f
WHERE day_of_year($f.flightDate)= 60 AND $f.flightNo =any "BM114" 
出力:
{"fullName":"Omar Harvey","BOARDING":"MEL","FLIGHT":"BM114","DEPARTURE":"2019-03-01T12:00:00Z"}