Utilisation des fonctions d'horodatage dans les interrogations

Vous pouvez effectuer diverses opérations arithmétiques sur les valeurs d'horodatage et de durée.

Si vous voulez suivre les exemples, voir pour voir des données-échantillons et utiliser les scripts pour charger des données-échantillons à des fins de test. Les scripts créent les tables utilisées dans les exemples et chargent les données dans les tables.

Si vous voulez suivre les exemples, voir Exemples de données pour exécuter des interrogations pour voir des exemples de données et apprendre à utiliser la console OCI pour créer les exemples de tables et charger des données à l'aide de fichiers JSON.

Expressions d'extraction

L'expression EXTRACT extrait un composant d'un horodatage.
extract_expression ::= EXTRACT "(" id FROM expression ")"

L'expression après le mot clé FROM doit retourner au plus un horodatage ou NULL. Si le résultat de cette expression est NULL ou vide, le résultat de EXTRACT est également NULL ou vide, respectivement. Sinon, le composant spécifié par l'ID est retourné. Cet ID doit être l'un des mots clés suivants : ANNÉE, MOIS, JOUR, HOUR, MINUTE, SECONDE, MILLISECOND, MICROSECOND, NANOSECOND, SEMAINE, ISOWEEK.

Exemple 1 : Quel est le nom complet et l'année d'arrivée des bagages pour le client avec le numéro de billet 1762383911861.
SELECT fullName, 
EXTRACT (YEAR FROM CAST (bag.bagInfo.bagArrivalDate AS Timestamp(0)))
AS YEAR FROM BaggageInfo bag 
WHERE ticketNo=1762383911861

Explication : Vous devez d'abord utiliser CAST pour convertir bagArrivalDate en TIMESTAMP, puis extraire le composant YEAR à partir de l'horodatage.

Sortie :
{"fullName":"Joanne Diaz","YEAR":2019}
Exemple 2 : Extraire tous les sacs qui ont traversé MIA entre 10 h 00 et 10 h 00 en février 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)

Explication : Vous voulez connaître les détails des vols qui ont traversé MIA entre 10h00 et 10h00 en février 2019. Vous utilisez ici un certain nombre de conditions de filtre. Tout d'abord, le vol devrait avoir pris naissance ou avoir traversé MIA. L'année d'arrivée devrait être 2019 et le mois d'arrivée devrait être 2 (février). Ensuite, vous filtrez si l'heure d'arrivée est comprise entre 10h00 et 10h00 (20 heures).

Sortie :
{"tagNum":"17657806255240","fltRouteSrc":["MIA","LAX"],"HOUR":16}
{"tagNum":"17657806292518","fltRouteSrc":["MIA","LAX"],"HOUR":16}
Exemple 3 : En quelle année et en quel mois le passager avec le code de réservation PQ1M8N a-t-il reçu les bagages?
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"

Explication : Vous devez d'abord utiliser CAST pour convertir bagArrivalDate en TIMESTAMP, puis extraire le composant YEAR et le composant MONTH de l'horodatage.

Sortie :
{"fullName":"Kendal Biddle","YEAR":2019,"MONTH":3}
Exemple 4 : Regroupez les données sur les bagages en fonction du mois d'arrivée et affichez le mois et le nombre de bagages arrivés ce mois-là.
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)))
Explication : Vous voulez regrouper les données en fonction du mois d'arrivée des bagages. Vous utilisez un tableau anormal pour aplanir les données. Le tableau bagInfo est aplati et la valeur de la date d'arrivée de l'entité composite est extraite du tableau. Vous utilisez ensuite CAST pour convertir bagArrivalDate en un horodatage, puis extraire le composant YEAR et le composant MONTH de l'horodatage. Vous utilisez ensuite la fonction count pour obtenir le total des bagages correspondant à chaque mois.

Note :

Une hypothèse dans les données est que tous les bagages sont arrivés la même année. Vous regroupez donc les données uniquement en fonction du mois.
Sortie :
{"MONTH":2,"COUNT":11}
{"MONTH":3,"COUNT":10}

Fonction timestamp_add()

Ajoute une durée à une valeur d'horodatage et retourne le nouvel horodatage. La durée peut être positive ou négative. Le type de résultat est TIMESTAMP(9).

Syntaxe :
TIMESTAMP(9) timestamp_add(TIMESTAMP timestamp, STRING duration)
Sémantique :
  • heure : Valeur TIMESTAMP ou valeur pouvant être convertie en TIMESTAMP.
  • durée : Chaîne au format [-](<n> <UNIT>)+, où 'n' est un nombre et <UNIT> peut être YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, MILLISECOND, NANOSECOND ou la forme plurielle de ces mots clés (par exemple, YEARS).

    Note :

    Le mot-clé UNIT n'est pas sensible à la casse.
  • valeur de retour : TIMESTAMP(9)
Exemple 1 : Dans l'application de compagnie aérienne, un délai de cinq minutes est considéré comme "à temps". Imprimez l'heure d'arrivée estimative à la première étape avec un tampon de cinq minutes pour le passager portant le numéro de billet 1762399766476.
SELECT timestamp_add(bag.bagInfo.flightLegs[0].estimatedArrival, "5 minutes")
AS ARRIVAL_TIME FROM BaggageInfo bag 
WHERE ticketNo=1762399766476

Explication : Dans l'application de la compagnie aérienne, un client peut avoir un nombre quelconque de tronçons de vol en fonction de la source et de la destination. Dans la requête ci-dessus, vous extrayez l'arrivée estimée dans la "première étape" du voyage. Ainsi, le premier enregistrement du tableau flightsLeg est extrait et l'heure estimatedArrival est extraite du tableau et une mémoire tampon de "5 minutes" est ajoutée à celui-ci et affichée.

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

Note :

La colonne estimatedArrival est une chaîne. Si la colonne a des valeurs STRING au format ISO-8601, elle sera automatiquement convertie par l'exécution SQL en type de données TIMESTAMP.

ISO8601 décrit un moyen internationalement accepté de représenter les dates, les heures et les durées.

Syntax: Date with time: YYYY-MM-DDThh:mm:ss[.s[s[s[s[s[s]]]]][Z|(+|-)hh:mm]

where
  • AAAA spécifie l'année sous la forme de quatre chiffres décimaux
  • MM spécifie le mois, à deux décimales, de 00 à 12
  • DD spécifie le jour, à deux décimales, de 00 à 31
  • hh spécifie l'heure, à deux décimales, de 00 à 23
  • mm indique les minutes, à deux décimales, de 00 à 59
  • ss[.s[s[s[s[s]]]] spécifie les secondes, sous forme de deux chiffres décimaux, de 00 à 59, éventuellement suivis d'un point décimal et de 1 à 6 chiffres décimaux (représentant la partie fractionnaire d'une seconde).
  • Z indique l'heure UTC (fuseau horaire 0). (Il peut également être spécifié par +00:00, mais pas par -00:00.)
  • (+|-)hh:mm spécifie le fuseau horaire comme différence par rapport à UTC. (Un des + ou - est requis.)
Exemple 1a : Imprimez l'heure d'arrivée estimative dans chaque jambe avec un tampon de cinq minutes pour le passager avec le numéro de billet 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

Explication : Vous voulez afficher l'heure estimatedArrival sur chaque portion de route. Le nombre de branches peut être différent pour chaque client. La référence de variable est donc utilisée dans l'interrogation ci-dessus et le tableau baggageInfo et le tableau flightLegs ne sont pas imbriqués pour exécuter l'interrogation.

Sortie :
{"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"}
Exemple 2 : Combien de sacs sont arrivés la semaine dernière?
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")]

Explication : Vous obtenez le nombre de bagages traités par l'application aérienne au cours de la dernière semaine. Un client peut avoir plus d'une entité (c'est-à-dire le tableau bagInfo peut avoir plus d'un enregistrement). La valeur de bagArrivalDate doit être comprise entre aujourd'hui et les 7 derniers jours. Pour chaque enregistrement du tableau bagInfo, vous déterminez si l'heure d'arrivée du sac se situe entre l'heure actuelle et la semaine précédente. La fonction current_time vous donne le temps maintenant. Une condition EXISTS est utilisée comme filtre pour déterminer si le sac a une date d'arrivée au cours de la dernière semaine. La fonction count détermine le nombre total de sacs dans cette période.

Sortie :
{"COUNT_LASTWEEK":0}
Exemple 3 : Trouvez le nombre de sacs arrivant dans les 6 prochaines heures.
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")]

Explication : Vous obtenez le nombre de sacs qui seront traités par l'application aérienne dans les 6 prochaines heures. Un client peut avoir plus d'un sac (c'est-à-dire que le tableau bagInfo peut avoir plus d'un enregistrement). La valeur de bagArrivalDate doit être comprise entre le moment présent et les 6 prochaines heures. Pour chaque enregistrement du tableau bagInfo, vous déterminez si l'heure d'arrivée du sac se situe entre le moment présent et six heures plus tard. La fonction current_time vous donne le temps maintenant. Une condition EXISTS est utilisée comme filtre pour déterminer si le sac a une date d'arrivée dans les six prochaines heures. La fonction count détermine le nombre total de sacs dans cette période.

Sortie :
{"COUNT_NEXT6HOURS":0}

Fonctions timestamp_diff() et get_duration()

timestamp_diff()

Retourne le nombre de millisecondes entre deux valeurs d'horodatage. Le type de résultat est LONG.

Syntaxe :
LONG timestamp_diff(TIMESTAMP timestamp1, TIMESTAMP
      timestamp2)
Semantique :
  • timestamp1 : Valeur TIMESTAMP ou valeur pouvant être convertie en TIMESTAMP.
  • timestamp2 : Valeur TIMESTAMP ou valeur pouvant être convertie en TIMESTAMP.
  • valeur de retour : LONG

get_duration()

Convertit le nombre de millisecondes indiqué en chaîne de durée. Le type de résultat est STRING.

Syntaxe :
STRING get_duration(LONG duration_millis)
Semantique :
  • duration_millis : Durée en millisecondes
  • valeur de retour : STRING. Le format de chaîne de durée retourné est [-](<n> <UNIT>)+, où <UNIT> peut être JOUR, HOUR, MINUTE, SECOND et MILLISECOND, par exemple "1 jour 2 heures" ou "-10 minutes 0 seconde 500 millisecondes".

Exemples :

Exemple 1 : Quelle est la durée entre le moment où les bagages ont été embarqués à une jambe et ont atteint la jambe suivante pour le passager avec le numéro de billet 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

Explication : Dans une application aérienne, chaque client peut avoir un nombre différent de sauts/jambes entre sa source et sa destination. Dans cette interrogation, vous déterminez le temps nécessaire entre chaque portion de vol. Ceci est déterminé par la différence entre bagArrivalDate et flightDate pour chaque étape de vol. Pour déterminer la durée en jours, heures ou minutes, transmettez le résultat de la fonction timestamp_diff à la fonction get_duration.

Sortie :
{"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"}
Pour déterminer la durée en millisecondes, utilisez uniquement la fonction 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
Exemple 2 : Combien de temps faut-il entre le moment de l'enregistrement et le moment où le sac est numérisé au point d'embarquement pour le passager avec le numéro de billet 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)

Explication : Dans les données des bagages, chaque flightLeg comporte un tableau d'actions. Il existe trois actions différentes dans le tableau d'actions. Le code d'action du premier élément du tableau est Checkin/Offload. Pour la première étape, le code d'action est Checkin et pour les autres étapes, le code d'action est Offload at the hop. Le code d'action du deuxième élément du tableau est le balayage BagTag. Dans l'interrogation ci-dessus, vous déterminez la différence de temps d'action entre le balayage de l'étiquette d'entité composite et le temps d'enregistrement. Vous utilisez la fonction contains pour filtrer le temps d'action uniquement si le code d'action est Archiver ou BagScan. Comme seule la première portion de vol contient les détails de l'enregistrement et du balayage d'entité composite, vous filtrez également les données à l'aide de la fonction starts_with pour extraire uniquement le code source fltRouteSrc. Pour déterminer la durée en jours, heures ou minutes, transmettez le résultat de la fonction timestamp_diff à la fonction get_duration.

Pour déterminer la durée en millisecondes, utilisez uniquement la fonction 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)
Sortie :
{"flightNo":"BM572","checkinTime":"2019-03-02T03:28:00Z",
"bagScanTime":"2019-03-02T04:52:00Z","diff":"- 1 hour 24 minutes"}
Exemple 3 : Combien de temps faut-il pour que les sacs d'un client sans billet 1762320369957 atteignent le premier point de transit?
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

Explication : Dans une application aérienne, chaque client peut avoir un nombre différent de sauts/jambes entre sa source et sa destination. Dans l'exemple ci-dessus, vous déterminez le temps nécessaire pour que le sac atteigne le premier point de transit. Dans les données relatives aux bagages, flightLeg est un tableau. Le premier enregistrement du tableau fait référence aux détails du premier point de transit. flightDate dans le premier enregistrement est l'heure à laquelle l'entité composite quitte la source et estimatedArrival dans le premier enregistrement de portion de vol indique l'heure à laquelle elle atteint le premier point de transit. La différence entre les deux donne le temps nécessaire pour que le sac atteigne le premier point de transit. Pour déterminer la durée en jours, heures ou minutes, transmettez le résultat de la fonction timestamp_diff à la fonction get_duration.

Pour déterminer la durée en millisecondes, utilisez la fonction 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
Sortie :
{"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"}

Exemples utilisant l'API QueryRequest

Vous pouvez utiliser l'API QueryRequest et appliquer des fonctions SQL pour extraire des données d'une table NoSQL.

Pour exécuter une interrogation, utilisez l'API NoSQLHandle.query().

Téléchargez le code complet SQLFunctions.java dans les exemples ici.
 //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);

Pour exécuter votre interrogation, utilisez la méthode borneo.NoSQLHandle.query().

Téléchargez le code complet SQLFunctions.py dans les exemples ici.
# 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)

Pour exécuter une interrogation, utilisez la fonction Client.Query.

Téléchargez le code complet SQLFunctions.go dans les exemples ici.
 //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)

Pour exécuter une interrogation, utilisez la méthode query.

JavaScript : Téléchargez le code complet SQLFunctions.js à partir des exemples ici.
  //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 : Téléchargez le code complet SQLFunctions.ts à partir des exemples ici.
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);

Pour exécuter une interrogation, vous pouvez appeler la méthode QueryAsync ou appeler la méthode GetQueryAsyncEnumerable et effectuer une itération sur l'énumération asynchrone obtenue.

Téléchargez le code complet SQLFunctions.cs dans les exemples ici.
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);