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"}