timestamp_round function
The timestamp_round
function returns a timestamp after rounding the supplied timestamp to the specified unit.
Note:
See also, timestamp_ceil and timestamp_floor/timestamp_trunc functions.
If the input timestamp value is already rounded to the specified unit, then the return value is the same as the input timestamp value.
Syntax:
TIMESTAMP timestamp_round(<timestamp>[, unit])
- timestamp: The
timestamp
argument takes a TIMESTAMP value or a value that can be cast to TIMESTAMP type. - unit: The
unit
argument is optional and a STRING data type. If not specified, DAY is the default unit. For more details, see Supported units. - Return Value: TIMESTAMP(0)
The function returns NULL in the following cases:
- If either the
timestamp
orunit
argument is set to NULL. - If the input
timestamp
is not castable to TIMESTAMP type.
- If either the
The units and their behavior are as follows:
Table 12-2 timestamp_round functional behavior
Unit | Actions |
---|---|
YEAR, IYEAR | Rounds up to the next year if the timestamp is on or after July first, otherwise rounds down. |
QUARTER | Rounds up to the next quarter if the timestamp is on or after the 16th day of the 2nd month of the quarter, otherwise rounds down. |
MONTH | Rounds up to the next month if the timestamp is on or after the 16th day, otherwise rounds down. |
WEEK, IWEEK | Rounds up to the next week if the timestamp is on or after the mid-day(12 PM) of the 4th day of the week, otherwise rounds down. |
DAY | Rounds up to the next day if the timestamp is on or after the mid-day(12 PM) of the current day, otherwise rounds down. |
HOUR | Rounds up to the next hour if the timestamp is on or after half an hour of the current hour, otherwise rounds down. |
MINUTE | Rounds up to the next minute if the timestamp is on or after 30 seconds of the current minute, otherwise rounds down. |
SECOND | Rounds up to the next second if the timestamp is on or after 500 milliseconds of the current second, otherwise rounds down. |
Example 12-15 From the airline baggage tracking data, print all the activities performed on the checked bags in the originating station MEL. Align the actions to one minute interval
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"
Explanation: In this query, you use the timestamp_round
function with unit as MINUTE to round the actionTime
to the nearest minute.
To avoid the duplication of results due to multiple checked baggage by a passenger, you consider only the first element of the bagInfo
array in this query.
{"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"}