timestamp_round関数

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

ノート:

timestamp_ceilおよびtimestamp_floor/timestamp_trunc関数も参照してください。

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

構文:

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

単位とその動作は次のとおりです。

表12-2 timestamp_roundの機能動作

単位 処置
YEAR、IYEAR タイムスタンプが7月以降の場合は翌年に切り上げ、それ以外の場合は切り下げます。
QUARTER タイムスタンプが四半期の第2月の第16日以降の場合は次の四半期に切り上げ、それ以外の場合は切り下げます。
MONTH タイムスタンプが16日以降の場合は翌月に切り上げ、それ以外の場合は切り下げます。
WEEK、IWEEK タイムスタンプが週の4日目の日中(午後12時)以降の場合は翌週に切り上げ、それ以外の場合は切り下げます。
DAY タイムスタンプが現在の日の日中(午後12時)以降の場合は翌日に切り上げ、それ以外の場合は切り下げます。
HOUR タイムスタンプが現在の時間の30分以降の場合は次の1時間に切り上げ、それ以外の場合は切り下げます。
MINUTE タイムスタンプが現在の分の30秒以降の場合は次の分に切り上げ、それ以外の場合は切り下げます。
SECOND タイムスタンプが現在の秒の500ミリ秒以降である場合は次の秒に切り上げ、それ以外の場合は切り下げます。

例12-15 航空会社の手荷物追跡データから、発信元ステーションMELの受託手荷物で実行されたすべてのアクティビティを出力。アクションを1分間隔に合せます

SELECT $b.actionAt, 
       $b.actionCode, 
       timestamp_round($b.actionTime, 'MINUTE') as actionTime
FROM baggageInfo bag, bag.bagInfo[0].flightLegs[0].actions[] AS $b
WHERE bag.bagInfo[0].flightLegs[0].fltRouteSrc = "MEL"

説明: この問合せでは、単位をMINUTEに指定したtimestamp_round関数を使用して、actionTimeを最も近い分に丸めます。

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

出力:
{"actionAt":"MEL","actionCode":"ONLOAD to LAX","actionTime":"2019-03-01T12:20:00Z"}
{"actionAt":"MEL","actionCode":"BagTag Scan at MEL","actionTime":"2019-03-01T11:52:00Z"}
{"actionAt":"MEL","actionCode":"Checkin at MEL","actionTime":"2019-03-01T11:43:00Z"}