Extract Expressions
Syntax
extract_expression ::= EXTRACT "(" id
FROM expression
")"
Semantics
The extract expression extract a component from a timestamp. Specifically, the expression after the FROM keyword must return at most one timestamp or NULL. If the result of this expression is NULL or empty, the results of EXTRACT is also NULL or empty, respectively. Otherwise, the component specified by the id is returned. This id must be one of the following keywords:
- YEAR
- Returns the year for the timestamp, in the range -6383 ~ 9999.
- MONTH
- Returns the month for the timestamp, in the range 1 ~ 12.
- DAY
- Returns the day of month for the timestamp, in the range 1 ~ 31.
- HOUR
- Returns the hour of day for the timestamp, in the range 0 ~ 23.
- MINUTE
- Returns the minute for the timestamp, in the range 0 ~ 59.
- SECOND
- Returns the second for the timestamp, in the range 0 ~ 59.
- MILLISECOND
- Returns the fractional second in millisecond for the timestamp, in the range 0 ~ 999.
- MICROSECOND
- Returns the fractional second in microsecond for the timestamp, in the range 0 ~ 999999.
- NANOSECOND
- Returns the fractional second in nanosecond for the timestamp, in the range 0 ~ 999999999.
- WEEK
- Returns the week number within the year where a week starts on Sunday and the first week has a minimum of 1 day in this year, in the range 1 ~ 54.
- ISOWEEK
- Returns the week number within the year based on IS0-8601, where a week starts on Monday and the first week has a minimum of 4 days in this year, in range 0 ~ 53.
There are specific built-in functions to extract each of the above components from a time stamp. For example, EXTRACT(YEAR from expr) is equivalent to year(expr). These and other built-in functions are described in Built-in Functions.
Example 6-96 Create a message that displays the bag arrival date, time, and destination airport details for a passenger from the airline baggage tracking application data
SELECT concat("Hi ",bag.fullname,", Please collect your bags from ",$station," airport on ",$t2,"/", $t3,"/", $t1," at ",$t4,":",$t5," Hrs") AS MESSAGE
FROM BaggageInfo bag, bag.bagInfo[0].bagArrivalDate AS $bagDate, bag.bagInfo[0].lastSeenStation AS $station,
EXTRACT(YEAR from (CAST($bagDate AS Timestamp(0)))) $t1,
EXTRACT(MONTH from (CAST($bagDate AS Timestamp(0)))) $t2,
EXTRACT(DAY from (CAST($bagDate AS Timestamp(0)))) $t3,
EXTRACT(HOUR from (CAST($bagDate AS Timestamp(0)))) $t4,
EXTRACT(MINUTE from (CAST($bagDate AS Timestamp(0)))) $t5
WHERE ticketNo = 1762344493810
Explanation: The bagArrivalDate
field in the BaggageInfo
table stores the date on which the checked bags are scheduled to arrive at the destination airport. You can use the EXTRACT expression to extract the date (day, month, and year) and time (hour and minutes) from the bagArrivalDate
field for the specified passenger. The date is stored as a string in the JSON data in the bagInfo
field. You first use the CAST expression to convert the bagArrivalDate
to a timestamp and then extract the date, month, year, and so forth from the timestamp.
To display as a message, you use the concat function.
{"MESSAGE":"Hi Adam Phillips, Please collect your bags from MEL airport on 2/1/2019 at
16:13 Hrs"}