Usando funções de Timestamp em consultas

Você pode executar várias operações aritméticas nos valores Timestamp e Duration.

Se você quiser acompanhar os exemplos, consulte Dados de amostra para executar consultas para exibir dados de amostra e usar os scripts para carregar dados de amostra para teste. Os scripts criam as tabelas usadas nos exemplos e carregam dados nas tabelas.

Se quiser acompanhar os exemplos, consulte Dados de amostra para executar consultas para exibir dados de amostra e aprender a usar a console do OCI para criar as tabelas de exemplo e carregar dados usando arquivos JSON.

Expressões de Extração

A expressão EXTRACT extrai um componente de um marcador de data/hora.

extract_expression ::= EXTRACT "(" id FROM expression ")"

A expressão depois da palavra-chave FROM deve retornar no máximo um carimbo de data/hora ou NULL. Se o resultado desta expressão for NULL ou vazio, o resultado de EXTRACT também será NULL ou vazio, respectivamente. Caso contrário, o componente especificado pelo id será retornado. Este ID deve ser uma das seguintes palavras-chave: ANO, MÊS, DIA, HORA, MINUTO, SEGUNDO, MILISECOND, MICROSECOND, NANOSECOND, SEMANA, ISOWEEK.

Exemplo 1: Qual é o nome completo e o ano de chegada da bagagem do cliente com o número do ticket 1762383911861.

SELECT fullName,
EXTRACT (YEAR FROM CAST (bag.bagInfo.bagArrivalDate AS Timestamp(0)))
AS YEAR FROM BaggageInfo bag
WHERE ticketNo=1762383911861

Explicação: primeiro use CAST para converter o bagArrivalDate em um TIMESTAMP e, em seguida, extraia o componente YEAR do TIMESTAMP.

Saída:

{"fullName":"Joanne Diaz","YEAR":2019}

Exemplo 2: Recuperar todas as malas que percorreram o MIA entre 10:00 e 10:00 em fevereiro de 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)

Explicação:Você quer saber os detalhes dos voos que percorreram o MIA entre as 10:00 e as 10:00 em fevereiro de 2019. Você usa várias condições de filtro aqui. Primeiro, o voo deveria ter se originado ou atravessado através do MIA. O ano de chegada deve ser 2019 e o mês de chegada deve ser 2 (fevereiro). Em seguida, filtre se a hora de chegada é entre 10:00 am e 10:00 pm (20 horas).

Saída:

{"tagNum":"17657806255240","fltRouteSrc":["MIA","LAX"],"HOUR":16}
{"tagNum":"17657806292518","fltRouteSrc":["MIA","LAX"],"HOUR":16}

Exemplo 3:Em que ano e mês o passageiro com o código de reserva PQ1M8N recebeu a bagagem?

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"

Explicação: primeiro use CAST para converter o bagArrivalDate em um TIMESTAMP e, em seguida, extraia o componente YEAR e o componente MONTH do TIMESTAMP.

Saída:

{"fullName":"Kendal Biddle","YEAR":2019,"MONTH":3}

Exemplo 4:Agrupe os dados de bagagem com base no mês de chegada e exiba o mês e o número de bagagem que chegou nesse mês.

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)))

Explicação: você deseja agrupar os dados com base no mês da chegada da bagagem. Você usa uma matriz de não aninhamento para nivelar os dados. O array bagInfo é nivelado e o valor da data de chegada do repositório é extraído do array. Em seguida, use CAST para converter o bagArrivalDate em um TIMESTAMP e, em seguida, extraia o componente YEAR e o componente MONTH do TIMESTAMP. Em seguida, use a função count para obter a bagagem total correspondente a cada mês.

Observação: uma suposição nos dados é que toda a bagagem chegou no mesmo ano. Portanto, você agrupa os dados apenas com base no mês.

Saída:

{"MONTH":2,"COUNT":11}
{"MONTH":3,"COUNT":10}

função timestamp_add()

Adiciona uma duração a um valor de timestamp e retorna o novo timestamp. A duração pode ser positiva ou negativa. O tipo de resultado é TIMESTAMP(9).

Sintaxe:

TIMESTAMP(9) timestamp_add(TIMESTAMP timestamp, STRING duration)

Semântica:

Observação: A palavra-chave UNIT não faz distinção entre maiúsculas e minúsculas.

Exemplo 1:No aplicativo de companhia aérea, um buffer de cinco minutos de atraso é considerado "em dia". Imprima a hora estimada de chegada no primeiro trecho com um buffer de cinco minutos para o passageiro com o número de bilhete 1762399766476.

SELECT timestamp_add(bag.bagInfo.flightLegs[0].estimatedArrival, "5 minutes")
AS ARRIVAL_TIME FROM BaggageInfo bag
WHERE ticketNo=1762399766476

Explicação: no aplicativo de companhia aérea, um cliente pode ter qualquer número de trechos de voo, dependendo da origem e do destino. Na consulta acima, você está obtendo a chegada estimada na "primeira etapa" da viagem. Portanto, o primeiro registro do array flightsLeg é extraído e o tempo estimatedArrival é extraído do array e um buffer de "5 minutos" é adicionado a ele e exibido.

Saída:

{"ARRIVAL_TIME":"2019-02-03T06:05:00.000000000Z"}

Observação:

A coluna estimatedArrival é uma STRING. Se a coluna tiver valores STRING no formato ISO-8601, ela será automaticamente convertida pelo runtime SQL no tipo de dados TIMESTAMP.

A ISO8601 descreve uma maneira internacionalmente aceita de representar datas, horários e durações.

Sintaxe: Data com hora: AAAA-MM-DDThh:mm:ss[.s[s[s[s[s[s]]][Z|(+|-)hh:mm]

em que

Exemplo 1a:Imprima a hora estimada de chegada em cada trecho com um buffer de cinco minutos para o passageiro com o número de bilhete 1762399766476.

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

Explicação:Você deseja exibir o tempo estimatedArrival em cada trecho. O número de pernas pode ser diferente para cada cliente. Portanto, a referência de variável é usada na consulta acima e o array baggageInfo e o array flightLegs não são aninhados para executar a consulta.

Saída:

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

Exemplo 2: Quantas malas chegaram na última semana?

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")]

Explicação: você obtém uma contagem do número de malas processadas pela solicitação de companhia aérea na última semana. Um cliente pode ter mais de um repositório (ou seja, o array bagInfo pode ter mais de um registro). ObagArrivalDate deve ter um valor entre hoje e os últimos 7 dias. Para cada registro no array bagInfo, você determina se a hora de chegada da bolsa está entre a hora agora e uma semana atrás. A função current_time fornece a você o tempo agora. Uma condição EXISTS é usada como filtro para determinar se a bolsa tem uma data de chegada na última semana. A função count determina o número total de bolsas nesse período.

Saída:

{"COUNT_LASTWEEK":0}

Exemplo 3: Localize o número de malas que chegam nas próximas 6 horas.

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")]

Explicação: você obtém uma contagem do número de malas que serão processadas pela solicitação de companhia aérea nas próximas 6 horas. Um cliente pode ter mais de um repositório (ou seja, o array bagInfo pode ter mais de um registro). O bagArrivalDate deve estar entre o horário atual e as próximas 6 horas. Para cada registro no array bagInfo, você determina se a hora de chegada da bolsa está entre a hora agora e seis horas depois. A função current_time fornece a você o tempo agora. Uma condição EXISTS é usada como filtro para determinar se a bolsa tem uma data de chegada nas próximas seis horas. A função count determina o número total de bolsas nesse período.

Saída:

{"COUNT_NEXT6HOURS":0}

funções timestamp_diff() e get_duration()

timestamp_diff()

Retorna o número de milissegundos entre dois valores de timestamp. O tipo de resultado é LONG.

Sintaxe:

LONG timestamp_diff(TIMESTAMP timestamp1, TIMESTAMP
      timestamp2)

Semântica:

obter_duração()

Converte o número fornecido de milissegundos em uma string de duração. O tipo de resultado é STRING.

Sintaxe:

STRING get_duration(LONG duration_millis)

Semântica:

Exemplos:

Exemplo 1: Qual é a duração entre o momento em que a bagagem foi embarcada em um trecho e chegou ao próximo trecho para o passageiro com o número de passagem 1762355527825?

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

Explicação: em um aplicativo de companhia aérea, cada cliente pode ter um número diferente de saltos/pernas entre sua origem e destino. Nesta consulta, você determina o tempo necessário entre cada trecho de voo. Isto é determinado pela diferença entre bagArrivalDate e flightDate para cada trecho de voo. Para determinar a duração em dias, horas ou minutos, informe o resultado da função timestamp_diff para a função get_duration.

Saída:

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

Para determinar a duração em milissegundos, use apenas a função 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

Exemplo 2:Quanto tempo leva desde o momento do check-in até o momento em que a mala é escaneada no ponto de embarque para o passageiro com o número do bilhete 176234463813?

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)

Explicação: Nos dados de bagagem, cada flightLeg tem um array de ações. Há três ações diferentes no array de ações. O código de ação do primeiro elemento no array é Check-in/Descarregamento. Para o primeiro trecho, o código de ação é Check-in e para os outros trechos, o código de ação é Offload no hop. O código de ação para o segundo elemento do array é BagTag Scan. Na consulta acima, você determina a diferença no tempo de ação entre a verificação da tag de bolsa e o tempo de check-in. Use a função contains para filtrar o horário da ação somente se o código da ação for Check-in ou BagScan. Como apenas o primeiro trecho de voo tem detalhes de check-in e varredura de bolsa, você também filtra os dados usando a função starts_with para buscar apenas o código-fonte fltRouteSrc. Para determinar a duração em dias, horas ou minutos, informe o resultado da função timestamp_diff para a função get_duration.

Para determinar a duração em milissegundos, use apenas a função 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)

Saída:

{"flightNo":"BM572","checkinTime":"2019-03-02T03:28:00Z",
"bagScanTime":"2019-03-02T04:52:00Z","diff":"- 1 hour 24 minutes"}

Exemplo 3: Quanto tempo leva para as malas de um cliente com o tíquete nº 1762320369957 chegarem ao primeiro ponto de trânsito?

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

Explicação: em um aplicativo de companhia aérea, cada cliente pode ter um número diferente de saltos/pernas entre sua origem e destino. No exemplo acima, você determina o tempo necessário para a bolsa chegar ao primeiro ponto de trânsito. Nos dados de bagagem, o flightLeg é uma matriz. O primeiro registro no array se refere aos primeiros detalhes do ponto de trânsito. O flightDate no primeiro registro é o horário em que o saco sai da origem e o estimatedArrival no primeiro registro de trecho de voo indica o horário em que atinge o primeiro ponto de trânsito. A diferença entre os dois dá o tempo necessário para que o saco atinja o primeiro ponto de trânsito. Para determinar a duração em dias, horas ou minutos, informe o resultado da função timestamp_diff para a função get_duration.

Para determinar a duração em milissegundos, use a função 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

Saída:

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

Exemplos de uso da API QueryRequest

Você pode usar a API QueryRequest e aplicar funções SQL para extrair dados de uma tabela NoSQL.

Para executar sua consulta, use a API NoSQLHandle.query().

Faça download do código completo SQLFunctions.java pelos exemplos aqui.

 //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);

Para executar sua consulta, use o método borneo.NoSQLHandle.query().

Faça download do código completo SQLFunctions.py nos exemplos aqui.

# 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)

Para executar uma consulta, use a função Client.Query.

Faça download do código completo SQLFunctions.go nos exemplos aqui.

 //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)

Para executar uma consulta, use o método query.

JavaScript: Faça download do código completo SQLFunctions.js dos exemplos aqui.

  //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);
   }
}

TypeScript: Faça download do código completo SQLFunctions.ts dos exemplos aqui.

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);

Para executar uma consulta, você pode chamar o método QueryAsync ou chamar o método GetQueryAsyncEnumerable e iterar sobre o enumerável assíncrono resultante.

Faça download do código completo SQLFunctions.cs nos exemplos aqui.

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);

Tópicos Relacionados