Uso delle funzioni Timestamp nelle query
È possibile eseguire varie operazioni aritmetiche sui valori di indicatore orario e durata.
Se si desidera seguire gli esempi, vedere per visualizzare i dati di esempio e utilizzare gli script per caricare i dati di esempio per i test. Gli script creano le tabelle utilizzate negli esempi e caricano i dati nelle tabelle.
Se si desidera seguire gli esempi, vedere Dati di esempio per eseguire query per visualizzare dati di esempio e imparare a utilizzare OCI Console per creare le tabelle di esempio e caricare i dati utilizzando i file JSON.
Argomenti correlati
Espressioni Extract
extract_expression ::= EXTRACT "(" id FROM expression ")"
L'espressione dopo la parola chiave FROM deve restituire al massimo un indicatore orario o NULL. Se il risultato di questa espressione è NULL o vuoto, il risultato di EXTRACT è NULL o vuoto, rispettivamente. In caso contrario, viene restituito il componente specificato dall'ID. Questo ID deve essere una delle seguenti parole chiave: ANNO, MESE, GIORNO, ORA, MINUTO, SECONDO, MILLISECOND, MICROSECOND, NANOSECOND, SETTIMANA, ISOWEEK.
SELECT fullName,
EXTRACT (YEAR FROM CAST (bag.bagInfo.bagArrivalDate AS Timestamp(0)))
AS YEAR FROM BaggageInfo bag
WHERE ticketNo=1762383911861
Spiegazione: utilizzare innanzitutto CAST per convertire bagArrivalDate
in TIMESTAMP e quindi recuperare il componente YEAR dall'indicatore orario.
{"fullName":"Joanne Diaz","YEAR":2019}
SELECT bag.bagInfo[].tagNum,bag.bagInfo[].flightLegs[].fltRouteSrc,
$t1 AS HOUR FROM BaggageInfo bag,
EXTRACT(HOUR FROM CAST (bag.bagInfo[0].bagArrivalDate AS Timestamp(0))) $t1,
EXTRACT(YEAR FROM CAST (bag.bagInfo[0].bagArrivalDate AS Timestamp(0))) $t2,
EXTRACT(MONTH FROM CAST (bag.bagInfo[0].bagArrivalDate AS Timestamp(0))) $t3
WHERE bag.bagInfo[].flightLegs[].fltRouteSrc=any "MIA" AND
$t2=2019 AND $t3=02 AND ($t1>10 AND $t1<20)
Spiegazione: Vuoi conoscere i dettagli dei voli che hanno attraversato il MIA tra le 10:00 e le 10:00 di febbraio 2019. Qui vengono utilizzate diverse condizioni di filtro. In primo luogo, il volo avrebbe dovuto essere originato o attraversato attraverso MIA. L'anno di arrivo dovrebbe essere 2019 e il mese di arrivo dovrebbe essere 2 (febbraio). Quindi filtra se l'ora di arrivo è compresa tra le 10:00 e le 10:00 (20 ore).
{"tagNum":"17657806255240","fltRouteSrc":["MIA","LAX"],"HOUR":16}
{"tagNum":"17657806292518","fltRouteSrc":["MIA","LAX"],"HOUR":16}
SELECT fullName,
EXTRACT(YEAR FROM CAST (bag.bagInfo.bagArrivalDate AS Timestamp(0))) AS YEAR,
EXTRACT(MONTH FROM CAST (bag.bagInfo.bagArrivalDate AS Timestamp(0))) AS MONTH
FROM BaggageInfo bag WHERE bag.confNo="PQ1M8N"
Spiegazione: utilizzare innanzitutto CAST per convertire bagArrivalDate
in TIMESTAMP e quindi recuperare il componente YEAR e il componente MONTH dall'indicatore orario.
{"fullName":"Kendal Biddle","YEAR":2019,"MONTH":3}
SELECT EXTRACT(MONTH FROM CAST ($bag_arr_date AS Timestamp(0))) AS MONTH,
count(EXTRACT(MONTH FROM CAST ($bag_arr_date AS Timestamp(0)))) AS COUNT
FROM BaggageInfo $bag, $bag.bagInfo[].bagArrivalDate $bag_arr_date
GROUP BY EXTRACT(MONTH FROM CAST ($bag_arr_date AS Timestamp(0)))
bagInfo
viene appiattito e il valore della data di arrivo del sacchetto viene recuperato dall'array. Utilizzare quindi CAST per convertire bagArrivalDate
in un TIMESTAMP e quindi recuperare il componente YEAR e il componente MONTH dall'indicatore orario. Quindi si utilizza la funzione count
per ottenere il bagaglio totale corrispondente a ogni mese.
Nota
Un presupposto nei dati è che tutto il bagaglio è arrivato nello stesso anno. I dati vengono quindi raggruppati solo in base al mese.{"MONTH":2,"COUNT":11}
{"MONTH":3,"COUNT":10}
Funzione timestamp_add()
Aggiunge una durata a un valore di indicatore orario e restituisce il nuovo indicatore orario. La durata può essere positiva o negativa. Il tipo di risultato è TIMESTAMP(9)
.
TIMESTAMP(9) timestamp_add(TIMESTAMP timestamp, STRING duration)
- indicatore orario: un valore TIMESTAMP o un valore che può essere convertito in TIMESTAMP.
- durata: stringa con formato [-](<n> <UNIT>)+, dove 'n' è un numero e <UNIT> può essere YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, MILLISECOND, NANOSECOND o la forma plurale di queste parole chiave (ad esempio YEARS).
Nota
La parola chiave UNIT non fa distinzione tra maiuscole e minuscole. - valore di ritorno: TIMESTAMP(9)
SELECT timestamp_add(bag.bagInfo.flightLegs[0].estimatedArrival, "5 minutes")
AS ARRIVAL_TIME FROM BaggageInfo bag
WHERE ticketNo=1762399766476
Spiegazione: nell'applicazione della compagnia aerea, un cliente può avere un numero qualsiasi di tappe del volo a seconda dell'origine e della destinazione. Nella query sopra, si sta recuperando l'arrivo stimato nella "prima tappa" del viaggio. Il primo record dell'array flightsLeg
viene quindi recuperato e l'ora estimatedArrival
viene recuperata dall'array e viene aggiunto e visualizzato un buffer di "5 minuti".
{"ARRIVAL_TIME":"2019-02-03T06:05:00.000000000Z"}
Nota
La colonna estimatedArrival
è STRING. Se la colonna contiene valori STRING in formato ISO-8601, verrà convertita automaticamente dal runtime SQL in tipo di dati TIMESTAMP.
ISO8601 descrive un modo accettato a livello internazionale per rappresentare date, orari e durate.
Syntax: Date with time: YYYY-MM-DDThh:mm:ss[.s[s[s[s[s[s]]]]][Z|(+|-)hh:mm]
- YYYY specifica l'anno come quattro cifre decimali
- MM specifica il mese, come due cifre decimali, da 00 a 12
- DD specifica il giorno, come due cifre decimali, da 00 a 31
- hh specifica l'ora, come due cifre decimali, da 00 a 23
- mm specifica i minuti, come due cifre decimali, da 00 a 59
- ss[.s[s[s[s[s]]] specifica i secondi, come due cifre decimali, da 00 a 59, facoltativamente seguiti da una virgola decimale e da 1 a 6 cifre decimali (che rappresentano la parte frazionaria di un secondo).
- Z specifica l'ora UTC (fuso orario 0). Può essere specificato anche da +00:00, ma non da -00:00.
- (+|-)hh:mm specifica il fuso orario come differenza da UTC. (È necessario utilizzare + o -).
SELECT $s.ticketno, $value as estimate,
timestamp_add($value, '5 minute') AS add5min
FROM baggageinfo $s,
$s.bagInfo.flightLegs.estimatedArrival as $value
WHERE ticketNo=1762399766476
Spiegazione: si desidera visualizzare l'ora estimatedArrival
su ogni tappa. Il numero di gambe può essere diverso per ogni cliente. Pertanto, il riferimento alla variabile viene utilizzato nella query precedente e l'array baggageInfo
e l'array flightLegs
non sono nidificati per eseguire la query.
{"ticketno":1762399766476,"estimate":"2019-02-03T06:00:00Z",
"add5min":"2019-02-03T06:05:00.000000000Z"}
{"ticketno":1762399766476,"estimate":"2019-02-03T08:22:00Z",
"add5min":"2019-02-03T08:27:00.000000000Z"}
SELECT count(*) AS COUNT_LASTWEEK FROM baggageInfo bag
WHERE EXISTS bag.bagInfo[$element.bagArrivalDate < current_time()
AND $element.bagArrivalDate > timestamp_add(current_time(), "-7 days")]
Spiegazione: si ottiene un conteggio del numero di borse elaborate dall'applicazione della compagnia aerea nell'ultima settimana. Un cliente può avere più di un sacchetto (l'array bagInfo
può avere più di un record). Il valore di bagArrivalDate
deve essere compreso tra oggi e gli ultimi 7 giorni. Per ogni record nell'array bagInfo
, si determina se l'ora di arrivo del sacchetto è compresa tra l'ora corrente e una settimana fa. La funzione current_time
ti dà il tempo ora. Come filtro viene utilizzata una condizione EXISTS per determinare se il sacchetto ha una data di arrivo nell'ultima settimana. La funzione count
determina il numero totale di sacchetti in questo periodo di tempo.
{"COUNT_LASTWEEK":0}
SELECT count(*) AS COUNT_NEXT6HOURS FROM baggageInfo bag
WHERE EXISTS bag.bagInfo[$element.bagArrivalDate > current_time()
AND $element.bagArrivalDate < timestamp_add(current_time(), "6 hours")]
Spiegazione: si ottiene un conteggio del numero di borse che verranno elaborate dall'applicazione della compagnia aerea nelle prossime 6 ore. Un cliente può avere più di un sacchetto (l'array bagInfo
può avere più di un record). Il valore bagArrivalDate
deve essere compreso tra l'ora corrente e le 6 ore successive. Per ogni record nell'array bagInfo
, determinare se l'ora di arrivo del sacchetto è compresa tra l'ora corrente e sei ore successive. La funzione current_time
ti dà il tempo ora. Come filtro viene utilizzata una condizione EXISTS per determinare se il sacchetto ha una data di arrivo nelle sei ore successive. La funzione count
determina il numero totale di sacchetti in questo periodo di tempo.
{"COUNT_NEXT6HOURS":0}
Funzioni timestamp_diff() e get_duration()
timestamp_diff()
Restituisce il numero di millisecondi tra due valori di indicatore orario. Il tipo di risultato è LONG
.
LONG timestamp_diff(TIMESTAMP timestamp1, TIMESTAMP
timestamp2)
- timestamp1: un valore TIMESTAMP o un valore che può essere convertito in TIMESTAMP
- timestamp2: un valore TIMESTAMP o un valore che può essere convertito in TIMESTAMP
- valore restituito: LONG
get_duration()
Converte il numero di millisecondi specificato in una stringa di durata. Il tipo di risultato è STRING
.
STRING get_duration(LONG duration_millis)
- duration_millis: la durata in millisecondi.
- valore restituito: STRING. Il formato stringa di durata restituito è [-](<n> <UNIT>)+, dove <UNIT> può essere DAY, HOUR, MINUTE, SECOND e MILLISECOND, ad esempio "1 giorno 2 ore" o "-10 minuti 0 secondo 500 millisecondi".
Esempi:
SELECT $s.ticketno, $bagInfo.bagArrivalDate, $flightLeg.flightDate,
get_duration(timestamp_diff($bagInfo.bagArrivalDate, $flightLeg.flightDate)) AS diff
FROM baggageinfo $s,
$s.bagInfo[] AS $bagInfo, $bagInfo.flightLegs[] AS $flightLeg
WHERE ticketNo=1762355527825
Spiegazione: in un'applicazione aerea ogni cliente può disporre di un numero diverso di hop/leg tra l'origine e la destinazione. In questa query si determina il tempo impiegato tra ogni tappa del volo. Ciò è determinato dalla differenza tra bagArrivalDate
e flightDate
per ogni tappa di volo. Per determinare la durata in giorni, ore o minuti, passare il risultato della funzione timestamp_diff
alla funzione get_duration
.
{"bagArrivalDate":"2019-03-22T10:17:00Z","flightDate":"2019-03-22T07:00:00Z",
"diff":"3 hours 17 minutes"}
{"bagArrivalDate":"2019-03-22T10:17:00Z","flightDate":"2019-03-22T07:23:00Z",
"diff":"2 hours 54 minutes"}
{"bagArrivalDate":"2019-03-22T10:17:00Z","flightDate":"2019-03-22T08:23:00Z",
"diff":"1 hour 54 minutes"}
timestamp_diff
.SELECT $s.ticketno, $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
SELECT $flightLeg.flightNo,
$flightLeg.actions[contains($element.actionCode, "Checkin")].actionTime AS checkinTime,
$flightLeg.actions[contains($element.actionCode, "BagTag Scan")].actionTime AS bagScanTime,
get_duration(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)
Spiegazione: nei dati relativi ai bagagli, ogni flightLeg
dispone di un array di azioni. Nell'array di azioni sono presenti tre azioni diverse. Il codice azione per il primo elemento dell'array è Check-in/Offload. Per la prima tappa, il codice azione è Checkin e per le altre tappe, il codice azione è Offload al hop. Il codice azione per il secondo elemento dell'array è BagTag Scan. Nella query precedente è possibile determinare la differenza di tempo di azione tra la scansione dei tag bag e l'ora di check-in. La funzione contains
consente di filtrare l'ora dell'azione solo se il codice dell'azione è Check-in o BagScan. Poiché solo la prima tappa di volo dispone di dettagli per il check-in e la scansione dei bagagli, è inoltre possibile filtrare i dati utilizzando la funzione starts_with
per recuperare solo il codice sorgente fltRouteSrc
. Per determinare la durata in giorni, ore o minuti, passare il risultato della funzione timestamp_diff
alla funzione get_duration
.
timestamp_diff
.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)
{"flightNo":"BM572","checkinTime":"2019-03-02T03:28:00Z",
"bagScanTime":"2019-03-02T04:52:00Z","diff":"- 1 hour 24 minutes"}
SELECT $bagInfo.flightLegs[1].actions[2].actionTime,
$bagInfo.flightLegs[0].actions[0].actionTime,
get_duration(timestamp_diff($bagInfo.flightLegs[1].actions[2].actionTime,
$bagInfo.flightLegs[0].actions[0].actionTime)) AS diff
FROM baggageinfo $s, $s.bagInfo[] AS $bagInfo
WHERE ticketNo=1762320369957
Spiegazione: in un'applicazione aerea ogni cliente può disporre di un numero diverso di hop/leg tra l'origine e la destinazione. Nell'esempio precedente, si determina il tempo impiegato per il sacchetto per raggiungere il primo punto di transito. Nei dati relativi ai bagagli, flightLeg
è un array. Il primo record dell'array fa riferimento ai dettagli del primo punto di transito. Il valore flightDate
nel primo record è l'ora in cui il sacchetto lascia l'origine e il valore estimatedArrival
nel primo record della gamba di volo indica l'ora in cui raggiunge il primo punto di transito. La differenza tra i due dà il tempo necessario affinché la borsa raggiunga il primo punto di transito. Per determinare la durata in giorni, ore o minuti, passare il risultato della funzione timestamp_diff
alla funzione get_duration
.
timestamp_diff
.
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
{"flightDate":"2019-03-12T03:00:00Z","estimatedArrival":"2019-03-12T16:00:00Z","diff":"13 hours"}
{"flightDate":"2019-03-12T03:00:00Z","estimatedArrival":"2019-03-12T16:40:00Z","diff":"13 hours 40 minutes"}
Esempi di utilizzo dell'API QueryRequest
È possibile utilizzare l'API QueryRequest
e applicare le funzioni SQL per recuperare i dati da una tabella NoSQL.
Per eseguire la query, utilizzare l'API NoSQLHandle.query()
.
//Fetch rows from the table
private static void fetchRows(NoSQLHandle handle,String sqlstmt) throws Exception {
try (
QueryRequest queryRequest = new QueryRequest().setStatement(sqlstmt);
QueryIterableResult results = handle.queryIterable(queryRequest)){
for (MapValue res : results) {
System.out.println("\t" + res);
}
}
}
String ts_func1="SELECT timestamp_add(bag.bagInfo.flightLegs[0].estimatedArrival, \"5 minutes\")"+
" AS ARRIVAL_TIME FROM BaggageInfo bag WHERE ticketNo=1762341772625";
System.out.println("Using timestamp_add function ");
fetchRows(handle,ts_func1);
String ts_func2="SELECT $s.ticketno, $bagInfo.bagArrivalDate, $flightLeg.flightDate, "+
"get_duration(timestamp_diff($bagInfo.bagArrivalDate, $flightLeg.flightDate)) AS diff "+
"FROM baggageinfo $s, $s.bagInfo[] AS $bagInfo, $bagInfo.flightLegs[] AS $flightLeg "+
"WHERE ticketNo=1762344493810";
System.out.println("Using get_duration and timestamp_diff function ");
fetchRows(handle,ts_func2);
Per eseguire la query, utilizzare il metodo borneo.NoSQLHandle.query()
.
# Fetch data from the table
def fetch_data(handle,sqlstmt):
request = QueryRequest().set_statement(sqlstmt)
print('Query results for: ' + sqlstmt)
result = handle.query(request)
for r in result.get_results():
print('\t' + str(r))
ts_func1 = '''SELECT timestamp_add(bag.bagInfo.flightLegs[0].estimatedArrival, "5 minutes")
AS ARRIVAL_TIME FROM BaggageInfo bag WHERE ticketNo=1762341772625'''
print('Using timestamp_add function:')
fetch_data(handle,ts_func1)
ts_func2 = '''SELECT $s.ticketno, $bagInfo.bagArrivalDate, $flightLeg.flightDate,
get_duration(timestamp_diff($bagInfo.bagArrivalDate, $flightLeg.flightDate)) AS diff
FROM baggageinfo $s,
$s.bagInfo[] AS $bagInfo, $bagInfo.flightLegs[] AS $flightLeg
WHERE ticketNo=1762344493810'''
print('Using get_duration and timestamp_diff function:')
fetch_data(handle,ts_func2)
Per eseguire una query, utilizzare la funzione Client.Query
.
//fetch data from the table
func fetchData(client *nosqldb.Client, err error, tableName string, querystmt string)(){
prepReq := &nosqldb.PrepareRequest{
Statement: querystmt,
}
prepRes, err := client.Prepare(prepReq)
if err != nil {
fmt.Printf("Prepare failed: %v\n", err)
return
}
queryReq := &nosqldb.QueryRequest{
PreparedStatement: &prepRes.PreparedStatement, }
var results []*types.MapValue
for {
queryRes, err := client.Query(queryReq)
if err != nil {
fmt.Printf("Query failed: %v\n", err)
return
}
res, err := queryRes.GetResults()
if err != nil {
fmt.Printf("GetResults() failed: %v\n", err)
return
}
results = append(results, res...)
if queryReq.IsDone() {
break
}
}
for i, r := range results {
fmt.Printf("\t%d: %s\n", i+1, jsonutil.AsJSON(r.Map()))
}
}
ts_func1 := `SELECT timestamp_add(bag.bagInfo.flightLegs[0].estimatedArrival, "5 minutes")
AS ARRIVAL_TIME FROM BaggageInfo bag WHERE ticketNo=1762341772625`
fmt.Printf("Using timestamp_add function::\n")
fetchData(client, err,tableName,ts_func1)
ts_func2 := `SELECT $s.ticketno, $bagInfo.bagArrivalDate, $flightLeg.flightDate,
get_duration(timestamp_diff($bagInfo.bagArrivalDate, $flightLeg.flightDate)) AS diff
FROM baggageinfo $s,
$s.bagInfo[] AS $bagInfo, $bagInfo.flightLegs[] AS $flightLeg
WHERE ticketNo=1762344493810`
fmt.Printf("Using get_duration and timestamp_diff function:\n")
fetchData(client, err,tableName,ts_func2)
Per eseguire una query, utilizzare il metodo query
.
//fetches data from the table
async function fetchData(handle,querystmt) {
const opt = {};
try {
do {
const result = await handle.query(querystmt, opt);
for(let row of result.rows) {
console.log(' %O', row);
}
opt.continuationKey = result.continuationKey;
} while(opt.continuationKey);
} catch(error) {
console.error(' Error: ' + error.message);
}
}
interface StreamInt {
acct_Id: Integer;
profile_name: String;
account_expiry: TIMESTAMP;
acct_data: JSON;
}
/* fetches data from the table */
async function fetchData(handle: NoSQLClient,querystmt: string) {
const opt = {};
try {
do {
const result = await handle.query<StreamInt>(querystmt, opt);
for(let row of result.rows) {
console.log(' %O', row);
}
opt.continuationKey = result.continuationKey;
} while(opt.continuationKey);
} catch(error) {
console.error(' Error: ' + error.message);
}
}
const ts_func1 = `SELECT timestamp_add(bag.bagInfo.flightLegs[0].estimatedArrival, "5 minutes")
AS ARRIVAL_TIME FROM BaggageInfo bag WHERE ticketNo=1762341772625`
console.log("Using timestamp_add function:");
await fetchData(handle,ts_func1);
const ts_func2 = `SELECT $s.ticketno, $bagInfo.bagArrivalDate, $flightLeg.flightDate,
get_duration(timestamp_diff($bagInfo.bagArrivalDate, $flightLeg.flightDate)) AS diff
FROM baggageinfo $s,
$s.bagInfo[] AS $bagInfo, $bagInfo.flightLegs[] AS $flightLeg
WHERE ticketNo=1762344493810`
console.log("Using get_duration and timestamp_diff function:");
await fetchData(handle,ts_func2);
Per eseguire una query, è possibile chiamare il metodo QueryAsync
o chiamare il metodo GetQueryAsyncEnumerable
e ripetere l'iterazione sull'enumerabile asincrono risultante.
private static async Task fetchData(NoSQLClient client,String querystmt){
var queryEnumerable = client.GetQueryAsyncEnumerable(querystmt);
await DoQuery(queryEnumerable);
}
private static async Task DoQuery(IAsyncEnumerable<QueryResult<RecordValue>> queryEnumerable){
Console.WriteLine(" Query results:");
await foreach (var result in queryEnumerable) {
foreach (var row in result.Rows)
{
Console.WriteLine();
Console.WriteLine(row.ToJsonString());
}
}
}
private const string ts_func1 =@"SELECT timestamp_add(bag.bagInfo.flightLegs[0].estimatedArrival, ""5 minutes"")
AS ARRIVAL_TIME FROM BaggageInfo bag WHERE ticketNo=1762341772625";
Console.WriteLine("\nUsing timestamp_add function!");
await fetchData(client,ts_func1);
private const string ts_func2 =@"SELECT $s.ticketno, $bagInfo.bagArrivalDate, $flightLeg.flightDate,
get_duration(timestamp_diff($bagInfo.bagArrivalDate, $flightLeg.flightDate)) AS diff
FROM baggageinfo $s,
$s.bagInfo[] AS $bagInfo, $bagInfo.flightLegs[] AS $flightLeg
WHERE ticketNo=1762344493810";
Console.WriteLine("\nUsing get_duration and timestamp_diff function!");
await fetchData(client,ts_func2);