timestamp_diff function
The timestamp_diff
function returns the number of
milliseconds between two timestamp values. The result type is
LONG
.
LONG timestamp_diff(TIMESTAMP timestamp1, TIMESTAMP timestamp2
- timestamp1: A TIMESTAMP value or a value that can be cast to TIMESTAMP
- timestamp2: A TIMESTAMP value or a value that can be cast to TIMESTAMP
- Return Value: LONG
Example 12-5 What is the duration between the time the baggage was boarded at one leg and reached the next leg for the passenger with ticket number 1762355527825?
timestamp_diff
function.SELECT $bagInfo.bagArrivalDate, $flightLeg.flightDate,
timestamp_diff($bagInfo.bagArrivalDate, $flightLeg.flightDate) AS diff
FROM baggageinfo $s,
$s.bagInfo[] AS $bagInfo, $bagInfo.flightLegs[] AS $flightLeg
WHERE ticketNo=1762355527825
Explanation: In an airline application every customer can have
different number of hops/legs between their source and destination. In this query,
you determine the time taken between every flight leg. This is determined by the
difference between bagArrivalDate
and flightDate
for every flight leg.
{"bagArrivalDate":"2019-03-22T10:17:00Z","flightDate":"2019-03-22T07:00:00Z","diff":11820000}
{"bagArrivalDate":"2019-03-22T10:17:00Z","flightDate":"2019-03-22T07:23:00Z","diff":10440000}
{"bagArrivalDate":"2019-03-22T10:17:00Z","flightDate":"2019-03-22T08:23:00Z","diff":6840000}
Example 12-6 How long does it take from the time of check-in to the time the bag is scanned at the point of boarding for the passenger with ticket number 176234463813?
timestamp_diff
function.SELECT $flightLeg.flightNo,
$flightLeg.actions[contains($element.actionCode, "Checkin")].actionTime AS checkinTime,
$flightLeg.actions[contains($element.actionCode, "BagTag Scan")].actionTime AS bagScanTime,
timestamp_diff(
$flightLeg.actions[contains($element.actionCode, "Checkin")].actionTime,
$flightLeg.actions[contains($element.actionCode, "BagTag Scan")].actionTime
) AS diff
FROM baggageinfo $s,
$s.bagInfo[].flightLegs[] AS $flightLeg
WHERE ticketNo=176234463813 AND starts_with($s.bagInfo[].routing, $flightLeg.fltRouteSrc)
Explanation: In the baggage data, every
flightLeg
has an actions
array. There are
three different actions in the actions
array. The action code for
the first element in the array is Checkin/Offload
. For the first
leg, the action code is Checkin
and for the other legs, the action
code is Offload at the hop
. The action code for the second element
of the array is BagTag Scan
. In the query above, you determine the
difference in action time between the bag tag scan and check-in time. You use the
contains
function to filter the action time only if the action
code is Checkin or BagScan. Since only the first flight leg has details of check-in
and bag scan, you additionally filter the data using starts_with
function to fetch only the source code fltRouteSrc
.
{"flightNo":"BM572","checkinTime":"2019-03-02T03:28:00Z","bagScanTime":"2019-03-02T04:52:00Z","diff":-5040000}
Example 12-7 How long does it take for the bags of a customer with ticket no 1762320369957 to reach the first transit point?
timestamp_diff
function.SELECT $bagInfo.flightLegs[0].flightDate,
$bagInfo.flightLegs[0].estimatedArrival,
timestamp_diff($bagInfo.flightLegs[0].estimatedArrival,
$bagInfo.flightLegs[0].flightDate) AS diff
FROM baggageinfo $s, $s.bagInfo[] AS $bagInfo
WHERE ticketNo=1762320369957
Explanation: In an airline application every customer can have
different number of hops/legs between their source and destination. In the example
above, you determine the time taken for the bag to reach the first transit point. In
the baggage data, the flightLeg
is an array. The first record in
the array refers to the first transit point details. The flightDate
in the first record is the time when the bag leaves the source and the
estimatedArrival
in the first flight leg record indicates the
time it reaches the first transit point. The difference between the two gives the
time taken for the bag to reach the first transit point.
{"flightDate":"2019-03-12T03:00:00Z","estimatedArrival":"2019-03-12T16:00:00Z","diff":46800000}
{"flightDate":"2019-03-12T03:00:00Z","estimatedArrival":"2019-03-12T16:40:00Z","diff":49200000}