Zeitstempelfunktionen in Abfragen verwenden

Sie können verschiedene arithmetische Operationen für Zeitstempel- und Dauerwerte ausführen.

Wenn Sie die Beispiele befolgen möchten, finden Sie weitere Informationen unter zum Anzeigen von Beispieldaten und zum Laden von Beispieldaten zum Testen. Die Skripte erstellen die in den Beispielen verwendeten Tabellen und laden Daten in die Tabellen.

Wenn Sie die Beispiele befolgen möchten, finden Sie unter Beispieldaten zum Ausführen von Abfragen Informationen zum Anzeigen von Beispieldaten und zum Erstellen der Beispieltabellen mit der OCI-Konsole und zum Laden von Daten mit JSON-Dateien.

Ausdrücke extrahieren

Der EXTRACT-Ausdruck extrahiert eine Komponente aus einem Zeitstempel.
extract_expression ::= EXTRACT "(" id FROM expression ")"

Der Ausdruck nach dem Schlüsselwort FROM muss maximal einen Zeitstempel oder NULL zurückgeben. Wenn das Ergebnis dieses Ausdrucks NULL oder leer ist, ist das Ergebnis von EXTRACT ebenfalls NULL oder leer. Andernfalls wird die von der ID angegebene Komponente zurückgegeben. Diese ID muss eines der folgenden Schlüsselwörter sein: YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, MILLISECOND, MIKROSECOND, NANOSECOND, WEEK, ISOWEEK.

Beispiel 1: Wie lautet der vollständige Name und das Ankunftsjahr des Gepäcks für den Kunden mit der Ticketnummer 1762383911861.
SELECT fullName, 
EXTRACT (YEAR FROM CAST (bag.bagInfo.bagArrivalDate AS Timestamp(0)))
AS YEAR FROM BaggageInfo bag 
WHERE ticketNo=1762383911861

Erklärung: Sie müssen zuerst CAST verwenden, um bagArrivalDate in TIMESTAMP zu konvertieren und dann die Komponente YEAR aus dem Zeitstempel abzurufen.

Ausgabe:
{"fullName":"Joanne Diaz","YEAR":2019}
Beispiel 2: Rufen Sie alle Taschen ab, die im Februar 2019 zwischen 10:00 und 10:00 Uhr durch MIA gefahren sind.
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)

Erläuterung: Sie möchten die Details der Flüge erfahren, die im Februar 2019 von 10:00 bis 10:00 Uhr durch die MIA geflogen sind. Sie verwenden hier eine Reihe von Filterbedingungen. Erstens sollte der Flug von MIA stammen oder durchlaufen worden sein. Das Ankunftsjahr sollte 2019 sein und der Ankunftsmonat sollte 2 (Februar) sein. Dann filtern Sie, ob die Ankunftszeit zwischen 10:00 Uhr und 10:00 Uhr (20 Stunden) liegt.

Ausgabe:
{"tagNum":"17657806255240","fltRouteSrc":["MIA","LAX"],"HOUR":16}
{"tagNum":"17657806292518","fltRouteSrc":["MIA","LAX"],"HOUR":16}
Beispiel 3: In welchem Jahr und Monat hat der Fluggast mit dem Reservierungscode PQ1M8N das Gepäck erhalten?
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"

Erklärung: Sie müssen zuerst CAST verwenden, um bagArrivalDate in TIMESTAMP zu konvertieren, und dann die Komponente YEAR und MONTH aus dem Zeitstempel abrufen.

Ausgabe:
{"fullName":"Kendal Biddle","YEAR":2019,"MONTH":3}
Beispiel 4: Gruppieren Sie die Gepäckdaten basierend auf dem Ankunftsmonat, und zeigen Sie den Monat und die Anzahl der Gepäckstücke an, die in diesem Monat angekommen sind.
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)))
Erläuterung: Sie möchten die Daten basierend auf dem Monat der Ankunft des Gepäcks gruppieren. Sie verwenden ein unnest-Array, um die Daten zu vereinfachen. Das Array bagInfo ist abgeflacht, und der Wert des Ankunftsdatums des Beutels wird aus dem Array abgerufen. Anschließend konvertieren Sie mit CAST bagArrivalDate in einen TIMESTAMP und rufen dann die Komponente YEAR und MONTH aus dem Zeitstempel ab. Sie verwenden dann die Funktion count, um das gesamte Gepäck zu erhalten, das jedem Monat entspricht.

Hinweis:

Eine Vermutung in den Daten ist, dass das gesamte Gepäck im selben Jahr angekommen ist. Sie gruppieren die Daten also nur nach Monat.
Ausgabe:
{"MONTH":2,"COUNT":11}
{"MONTH":3,"COUNT":10}

timestamp_add()-Funktion

Fügt einem Zeitstempelwert eine Dauer hinzu und gibt den neuen Zeitstempel zurück. Die Dauer kann positiv oder negativ sein. Der Ergebnistyp lautet TIMESTAMP(9).

Syntax:
TIMESTAMP(9) timestamp_add(TIMESTAMP timestamp, STRING duration)
Semantik:
  • TIMESTAMP: Ein TIMESTAMP-Wert oder ein Wert, der in TIMESTAMP konvertiert werden kann.
  • Dauer: Eine Zeichenfolge im Format [-](<n> <UNIT>)+, wobei "n" eine Zahl und <UNIT> YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, MILLISECOND, NANOSECOND oder die Pluralform dieser Schlüsselwörter (z.B. YEARS) sein kann.

    Hinweis:

    Beim Schlüsselwort UNIT wird die Groß-/Kleinschreibung nicht beachtet.
  • Rückgabewert: TIMESTAMP(9)
Beispiel 1: In der Airline-Anwendung wird ein Puffer mit einer Verzögerung von fünf Minuten als pünktlich betrachtet. Drucken Sie die geschätzte Ankunftszeit auf der ersten Etappe mit einem Puffer von fünf Minuten für den Passagier mit der Ticketnummer 1762399766476 aus.
SELECT timestamp_add(bag.bagInfo.flightLegs[0].estimatedArrival, "5 minutes")
AS ARRIVAL_TIME FROM BaggageInfo bag 
WHERE ticketNo=1762399766476

Erläuterung: In der Airline-Anwendung kann ein Kunde je nach Herkunft und Ziel eine beliebige Anzahl von Flugstrecken haben. In der obigen Abfrage rufen Sie die geschätzte Ankunft in der "ersten Etappe" der Reise ab. Daher wird der erste Datensatz des Arrays flightsLeg abgerufen, und die Zeit estimatedArrival wird aus dem Array abgerufen, und es wird ein Puffer von "5 Minuten" hinzugefügt und angezeigt.

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

Hinweis:

Die Spalte estimatedArrival ist ein STRING. Wenn die Spalte STRING-Werte im ISO-8601-Format enthält, wird sie automatisch von der SQL-Laufzeit in den Datentyp TIMESTAMP konvertiert.

ISO8601 beschreibt eine international akzeptierte Möglichkeit, Daten, Zeiten und Dauer darzustellen.

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

Dabei gilt:
  • YYYY gibt das Jahr als vier Dezimalstellen an
  • MM gibt den Monat als zwei Dezimalstellen an, 00 bis 12
  • DD gibt den Tag als zwei Dezimalstellen an, 00 bis 31
  • hh gibt die Stunde als zwei Dezimalstellen an, 00 bis 23
  • mm gibt die Minuten als zwei Dezimalstellen an, 00 bis 59
  • ss[.s[s[s[s]]]]] gibt die Sekunden als zwei Dezimalstellen an, 00 bis 59, optional gefolgt von einem Dezimalpunkt und 1 bis 6 Dezimalstellen (d.h. den Bruchteil einer Sekunde).
  • Z gibt die UTC-Zeit an (Zeitzone 0). (Sie kann auch durch +00:00 angegeben werden, aber nicht durch -00:00.)
  • (+|-)hh:mm gibt die Zeitzone als Differenz zur UTC an. (Eines von + oder - ist erforderlich.)
Beispiel 1a: Drucken Sie die geschätzte Ankunftszeit in jeder Etappe mit einem Puffer von fünf Minuten für den Passagier mit der Ticketnummer 1762399766476 aus.
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

Erläuterung: Sie möchten die estimatedArrival-Zeit auf jeder Teilstrecke anzeigen. Die Anzahl der Beine kann für jeden Kunden unterschiedlich sein. Variablenreferenz wird also in der obigen Abfrage verwendet, und das Array baggageInfo und das Array flightLegs werden beim Ausführen der Abfrage entschlüsselt.

Ausgabe:
{"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"}
Beispiel 2: Wie viele Taschen sind in der letzten Woche angekommen?
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")]

Erläuterung: Sie erhalten die Anzahl der Gepäckstücke, die von der Airline-Anwendung in der letzten Woche verarbeitet wurden. Ein Kunde kann mehr als eine Tasche haben (das Array bagInfo kann mehr als einen Datensatz haben). Die bagArrivalDate muss einen Wert zwischen heute und den letzten 7 Tagen aufweisen. Für jeden Datensatz im Array bagInfo bestimmen Sie, ob die Ankunftszeit des Beutels zwischen der aktuellen Zeit und vor einer Woche liegt. Die Funktion current_time gibt Ihnen jetzt die Zeit. Eine EXISTS-Bedingung wird als Filter verwendet, um zu bestimmen, ob der Beutel ein Ankunftsdatum in der letzten Woche hat. Die Funktion count bestimmt die Gesamtanzahl der Beutel in diesem Zeitraum.

Ausgabe:
{"COUNT_LASTWEEK":0}
Beispiel 3: Suchen Sie die Anzahl der Gepäckstücke, die in den nächsten 6 Stunden ankommen.
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")]

Erläuterung: Sie erhalten die Anzahl der Gepäckstücke, die von der Airline-Anwendung in den nächsten 6 Stunden verarbeitet werden. Ein Kunde kann mehr als eine Tasche haben (das Array bagInfo kann mehr als einen Datensatz haben). Die bagArrivalDate muss zwischen der aktuellen Zeit und den nächsten 6 Stunden liegen. Für jeden Datensatz im Array bagInfo bestimmen Sie, ob die Ankunftszeit des Beutels zwischen der Zeit jetzt und sechs Stunden später liegt. Die Funktion current_time gibt Ihnen jetzt die Zeit. Eine EXISTS-Bedingung wird als Filter verwendet, um zu bestimmen, ob der Beutel ein Ankunftsdatum in den nächsten sechs Stunden hat. Die Funktion count bestimmt die Gesamtanzahl der Beutel in diesem Zeitraum.

Ausgabe:
{"COUNT_NEXT6HOURS":0}

timestamp_diff() und get_duration() Funktionen

timestamp_diff()

Gibt die Anzahl der Millisekunden zwischen zwei Zeitstempelwerten zurück. Der Ergebnistyp lautet LONG.

Syntax:
LONG timestamp_diff(TIMESTAMP timestamp1, TIMESTAMP
      timestamp2)
Semantik:
  • timestamp1: Ein TIMESTAMP-Wert oder ein Wert, der in TIMESTAMP konvertiert werden kann
  • timestamp2: Ein TIMESTAMP-Wert oder ein Wert, der in TIMESTAMP konvertiert werden kann
  • Rückgabewert: LONG

get_duration()

Konvertiert die angegebene Anzahl von Millisekunden in eine Dauerzeichenfolge. Der Ergebnistyp ist STRING.

Syntax:
STRING get_duration(LONG duration_millis)
Semantik:
  • duration_millis: die Dauer in ms
  • Rückgabewert: STRING. Das zurückgegebene Zeichenfolgenformat für die Dauer ist [-](<n> <UNIT>)+, wobei die <UNIT> DAY, HOUR, MINUTE, SECOND und MILLISECOND sein kann, z.B. "1 Tag 2 Stunden" oder "-10 Minuten 0 Sekunden 500 Millisekunden".

Beispiele:

Beispiel 1: Wie lange dauert es zwischen dem Einsteigen des Gepäcks auf einer Etappe und dem Erreichen der nächsten Etappe für den Passagier mit der Ticketnummer 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

Erläuterung: In einer Airline-Anwendung kann jeder Kunde eine unterschiedliche Anzahl von Hopfen/Beinen zwischen Herkunft und Ziel haben. In dieser Abfrage bestimmen Sie die Zeit zwischen jedem Flugbein. Dies wird durch die Differenz zwischen bagArrivalDate und flightDate für jede Flugstrecke bestimmt. Um die Dauer in Tagen, Stunden oder Minuten zu bestimmen, übergeben Sie das Ergebnis der Funktion timestamp_diff an die Funktion get_duration.

Ausgabe:
{"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"}
Um die Dauer in Millisekunden zu bestimmen, verwenden Sie nur die Funktion 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
Beispiel 2: Wie lange dauert es vom Zeitpunkt des Eincheckens bis zum Zeitpunkt des Scannens der Tasche beim Einsteigen für den Passagier mit der Ticketnummer 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)

Erläuterung: In den Gepäckdaten verfügt jede flightLeg über ein Aktionsarray. Das Aktionsarray enthält drei verschiedene Aktionen. Der Aktionscode für das erste Element im Array ist "Einchecken/Entladen". Für die erste Teilstrecke ist der Aktionscode "Checkin" und für die anderen Teilstrecken der Aktionscode "Offload at the hop". Der Aktionscode für das zweite Element des Arrays lautet BagTag Scan. In der obigen Abfrage bestimmen Sie den Unterschied in der Aktionszeit zwischen dem Bag-Tag-Scan und der Eincheckzeit. Mit der Funktion contains können Sie die Aktionszeit nur filtern, wenn der Aktionscode "Einchecken" oder BagScan lautet. Da nur die erste Flugstrecke Details zum Check-in und Bag Scan enthält, filtern Sie die Daten zusätzlich mit der Funktion starts_with, um nur den Quellcode fltRouteSrc abzurufen. Um die Dauer in Tagen, Stunden oder Minuten zu bestimmen, übergeben Sie das Ergebnis der Funktion timestamp_diff an die Funktion get_duration.

Um die Dauer in Millisekunden zu bestimmen, verwenden Sie nur die Funktion 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)
Ausgabe:
{"flightNo":"BM572","checkinTime":"2019-03-02T03:28:00Z",
"bagScanTime":"2019-03-02T04:52:00Z","diff":"- 1 hour 24 minutes"}
Beispiel 3: Wie lange dauert es, bis ein Kunde mit der Ticket-Nr. 1762320369957 den ersten Transitpunkt erreicht?
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

Erläuterung: In einer Airline-Anwendung kann jeder Kunde eine unterschiedliche Anzahl von Hopfen/Beinen zwischen Herkunft und Ziel haben. Im obigen Beispiel legen Sie fest, wie lange die Tasche bis zum ersten Durchgangspunkt benötigt wird. In den Gepäckdaten ist flightLeg ein Array. Der erste Datensatz im Array bezieht sich auf die ersten Transitpunktdetails. Die flightDate im ersten Datensatz ist die Zeit, zu der die Tasche die Quelle verlässt, und die estimatedArrival im ersten Flugbeindatensatz gibt die Zeit an, zu der sie den ersten Transitpunkt erreicht. Der Unterschied zwischen den beiden gibt die Zeit, die benötigt wird, um den ersten Durchgangspunkt zu erreichen. Um die Dauer in Tagen, Stunden oder Minuten zu bestimmen, übergeben Sie das Ergebnis der Funktion timestamp_diff an die Funktion get_duration.

Um die Dauer in Millisekunden zu bestimmen, verwenden Sie die Funktion 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
Ausgabe:
{"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"}

Beispiele für die Verwendung der QueryRequest-API

Sie können die QueryRequest-API verwenden und SQL-Funktionen anwenden, um Daten aus einer NoSQL-Tabelle abzurufen.

Zum Ausführen der Abfrage verwenden Sie die NoSQLHandle.query()-API.

Laden Sie den vollständigen Code SQLFunctions.java aus den Beispielen hier herunter.
 //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);

Um die Abfrage auszuführen, verwenden Sie die Methode borneo.NoSQLHandle.query().

Laden Sie den vollständigen Code SQLFunctions.py aus den Beispielen hier herunter.
# 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)

Um eine Abfrage auszuführen, verwenden Sie die Funktion Client.Query.

Laden Sie den vollständigen Code SQLFunctions.go aus den Beispielen hier herunter.
 //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)

Um eine Abfrage auszuführen, verwenden Sie die Methode query.

JavaScript: Laden Sie den vollständigen Code SQLFunctions.js aus den Beispielen hier herunter.
  //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: Laden Sie den vollständigen Code SQLFunctions.ts aus den Beispielen hier herunter.
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);

Um eine Abfrage auszuführen, können Sie die Methode QueryAsync aufrufen oder die Methode GetQueryAsyncEnumerable aufrufen und über die resultierende asynchrone Aufzählung iterieren.

Laden Sie den vollständigen Code SQLFunctions.cs aus den Beispielen hier herunter.
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);