timestamp_ceil関数

timestamp_ceil関数は、指定されたタイムスタンプの値を、指定された単位に丸めた値を返します。

入力タイムスタンプ値が、指定された単位にすでに切り上げられている場合、戻り値は入力タイムスタンプ値と同じです。

構文:

TIMESTAMP timestamp_ceil(<timestamp>[, unit])
セマンティクス:
  • timestamp: timestamp引数は、TIMESTAMP値またはTIMESTAMP型にキャストできる値を取ります。
  • unit: unit引数はオプションであり、STRINGデータ型です。指定しない場合、DAYがデフォルトの単位です。詳細は、サポートされている単位を参照してください。
  • 戻り値: TIMESTAMP(0)
    この関数は、次の場合にNULLを返します。
    • timestampまたはunit引数がNULLに設定されている場合。
    • 入力timestampがTIMESTAMP型にキャスト可能でない場合。

例12-11 予約コード'LE6J4Z'が'ZG8Z5N'の航空会社乗客について、経路情報および最も近い時刻に切り上げられた荷物到着日の出力

SELECT $b.routing AS ROUTE, 
timestamp_ceil($b.bagArrivalDate, 'HOUR') AS BAGTIME 
FROM BaggageInfo bag, bag.bagInfo[0] AS $b 
WHERE confNo BETWEEN 'LE6J4Z' and 'ZG8Z5N' 

説明: timestamp_ceil関数をユニット値HOURとともに使用して、受託手荷物の到着日を次の時間の開始日に切り上げます。

1人の乗客が複数の受託手荷物を預けたことによる結果の重複を避けるため、この問合せではbagInfo配列の最初の要素のみを考慮します。

出力:
{"ROUTE":"SFO/IST/ATH/JTR","BAGTIME":"2019-02-03T00:00:00Z"}
{"ROUTE":"JFK/IST/VIE","BAGTIME":"2019-03-05T12:00:00Z"}
{"ROUTE":"SFO/IST/ATH/JTR","BAGTIME":"2019-03-12T16:00:00Z"}
{"ROUTE":"MSQ/FRA/HKG","BAGTIME":"2019-02-03T09:00:00Z"}
{"ROUTE":"MXP/CDG/SLC/BZN","BAGTIME":"2019-03-15T11:00:00Z"}
{"ROUTE":"MIA/LAX/MEL","BAGTIME":"2019-02-04T11:00:00Z"}
{"ROUTE":"SFO/ORD/FRA","BAGTIME":"2019-03-02T14:00:00Z"}
{"ROUTE":"SFO/IST/ATH/JTR","BAGTIME":"2019-03-12T16:00:00Z"}
{"ROUTE":"SFO/IST/ATH/JTR","BAGTIME":"2019-03-07T17:00:00Z"}
{"ROUTE":"MIA/LAX/MEL","BAGTIME":"2019-02-02T00:00:00Z"}
{"ROUTE":"MEL/LAX/MIA","BAGTIME":"2019-03-02T17:00:00Z"}
{"ROUTE":"MXP/CDG/SLC/BZN","BAGTIME":"2019-02-21T15:00:00Z"}
{"ROUTE":"MSQ/FRA/HKG","BAGTIME":"2019-02-13T12:00:00Z"}
{"ROUTE":"JFK/MAD","BAGTIME":"2019-03-07T14:00:00Z"}

例12-12 航空会社の手荷物追跡データから、チケット番号1762344493810の乗客の手荷物到着日と手荷物競売日を、荷物保持期間として90日とみなして出力

SELECT $b.bagArrivalDate AS BagArrival, 
timestamp_ceil(timestamp_add($b.bagArrivalDate, "90 Days"), 'day') AS BagCollection 
FROM BaggageInfo bag, bag.bagInfo AS $b 
WHERE ticketNo=1762344493810

説明: この問合せでは、タイムスタンプ関数をネストする方法を示します。引取手のない手荷物が保管される日付を決定するには、timestamp_add関数を使用してbagArrivalDateに90日を追加します。timestamp_ceil関数は、値を翌日の先頭に切り上げます。

出力:
{"BagArrival":"2019-02-01T16:13:00Z","BagCollection":"2019-05-03T00:00:00Z"}