query에 시간 기록 함수 사용
시간 기록 및 기간 값에 대해 다양한 산술 연산을 수행할 수 있습니다.
예제와 함께 따르려면 를 참조하여 샘플 데이터를 보고 스크립트를 사용하여 테스트할 샘플 데이터를 로드합니다. 스크립트는 예제에 사용된 테이블을 생성하고 테이블로 데이터를 로드합니다.
예제와 함께 따르려면 쿼리를 실행할 샘플 데이터를 참조하여 샘플 데이터를 보고 OCI 콘솔을 사용하여 예제 테이블을 생성하고 JSON 파일을 사용하여 데이터를 로드하는 방법을 알아봅니다.
추출 표현식
extract_expression ::= EXTRACT "(" id FROM expression ")"
FROM 키워드 뒤의 표현식은 최대 하나의 시간 기록 또는 NULL을 반환해야 합니다. 이 표현식의 결과가 NULL이거나 비어 있으면 EXTRACT의 결과도 NULL이거나 비어 있습니다. 그렇지 않으면 ID로 지정된 구성 요소가 반환됩니다. 이 ID는 YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, MILLISECOND, MICROSECOND, NANOSECOND, WEEK, ISOWEEK 키워드 중 하나여야 합니다.
SELECT fullName,
EXTRACT (YEAR FROM CAST (bag.bagInfo.bagArrivalDate AS Timestamp(0)))
AS YEAR FROM BaggageInfo bag
WHERE ticketNo=1762383911861
설명: 먼저 CAST를 사용하여 bagArrivalDate
를 TIMESTAMP로 변환한 다음 TIMESTAMP에서 YEAR 구성 요소를 인출합니다.
{"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)
설명: 2019년 2월 오전 10시에서 오후 10시 사이에 MIA를 통해 이동한 항공편의 세부 정보를 알고 싶습니다. 여기서 여러 필터 조건을 사용합니다. 첫째, 비행은 MIA를 통해 시작되거나 통과되어야합니다. 도착 연도는 2019이고 도착 월은 2(2월)여야 합니다. 그런 다음 도착 시간이 오전 10:00에서 오후 10:00(20시간) 사이인지 필터링합니다.
{"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"
설명: 먼저 CAST를 사용하여 bagArrivalDate
를 TIMESTAMP로 변환한 다음 TIMESTAMP에서 YEAR 구성 요소 및 MONTH 구성 요소를 패치(fetch)합니다.
{"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
배열은 단순화되고 가방 도착 날짜 값이 배열에서 인출됩니다. 그런 다음 CAST를 사용하여 bagArrivalDate
를 TIMESTAMP로 변환한 다음 TIMESTAMP에서 YEAR 구성 요소 및 MONTH 구성 요소를 패치(fetch)합니다. 그런 다음 count
함수를 사용하여 매월 해당하는 총 수하물을 가져옵니다.
주:
데이터의 한 가지 가정은 모든 수하물이 같은 해에 도착했다는 것입니다. 따라서 월을 기준으로만 데이터를 그룹화합니다.{"MONTH":2,"COUNT":11}
{"MONTH":3,"COUNT":10}
timestamp_add() 함수
시간 기록 값에 기간을 추가하고 새 시간 기록을 반환합니다. 기간은 양수이거나 음수일 수 있습니다. 결과 유형은 TIMESTAMP(9)
입니다.
TIMESTAMP(9) timestamp_add(TIMESTAMP timestamp, STRING duration)
- TIMESTAMP: TIMESTAMP 값 또는 TIMESTAMP로 변환할 수 있는 값입니다.
- duration: [-](<n> <UNIT>)+ 형식의 문자열입니다. 여기서 'n'은 숫자이고 <UNIT>은 YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, MILLISECOND, NANOSECOND 또는 이러한 키워드의 복수 형식(예: YEARS)일 수 있습니다.
주:
UNIT 키워드는 대소문자를 구분하지 않습니다. - returnvalue: TIMESTAMP(9)
SELECT timestamp_add(bag.bagInfo.flightLegs[0].estimatedArrival, "5 minutes")
AS ARRIVAL_TIME FROM BaggageInfo bag
WHERE ticketNo=1762399766476
설명: 항공사 애플리케이션에서 고객은 출발지 및 목적지에 따라 다리를 원하는 수만큼 사용할 수 있습니다. 위 질의에서 여행의 "첫 번째 구간"에 예상 도착을 인출하는 중입니다. 따라서 flightsLeg
배열의 첫번째 레코드가 인출되고 estimatedArrival
시간이 배열에서 인출되고 버퍼 "5분"이 여기에 추가되고 표시됩니다.
{"ARRIVAL_TIME":"2019-02-03T06:05:00.000000000Z"}
주:
estimatedArrival
열은 STRING입니다. 열에 ISO-8601 형식의 STRING 값이 있으면 SQL 런타임에 의해 TIMESTAMP 데이터 유형으로 자동으로 변환됩니다.
ISO8601에서는 날짜, 시간 및 기간을 나타내는 국제적으로 허용되는 방법을 설명합니다.
Syntax: Date with time: YYYY-MM-DDThh:mm:ss[.s[s[s[s[s[s]]]]][Z|(+|-)hh:mm]
- YYYY는 연도를 소수점 네 자리로 지정합니다.
- MM은 월을 소수점 이하 2자리(00~12)로 지정합니다.
- DD는 00~31의 소수점 두 자리 숫자로 일을 지정합니다.
- hh는 00 ~ 23의 소수점 두 자리 숫자로 시를 지정합니다.
- mm은 분을 소수점 이하 2자리(00~59)로 지정합니다.
- ss[.s[s[s[s]]]]]는 초를 소수점 2자리(00~59자리)로 지정하며, 선택적으로 그 뒤에 소수점과 소수점 1~6자리(초의 소수 부분을 나타냄)가 옵니다.
- Z는 UTC 시간(시간대 0)을 지정합니다. +00:00으로 지정할 수도 있지만 -00:00으로 지정할 수는 없습니다.
- (+|-)hh:mm은 시간대를 UTC와의 차이로 지정합니다. + 또는 - 중 하나가 필요합니다.
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
설명: 모든 구간에 estimatedArrival
시간을 표시하려고 합니다. 각 고객의 다리 수는 다를 수 있습니다. 따라서 변수 참조가 위 질의에 사용되며 baggageInfo
배열과 flightLegs
배열은 질의를 실행하기 위해 중첩되지 않습니다.
{"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")]
설명: 지난 주에 항공사 응용 프로그램에서 처리한 가방 수가 표시됩니다. 고객은 가방을 두 개 이상 포함할 수 있습니다(bagInfo
배열은 레코드를 두 개 이상 포함할 수 있음). bagArrivalDate
의 값은 오늘과 최근 7일 사이여야 합니다. bagInfo
배열의 모든 레코드에 대해 가방 도착 시간이 현재 시간에서 1주 전 시간 사이인지 확인합니다. current_time
함수는 지금 시간을 제공합니다. EXISTS 조건은 지난 주 가방에 도착 날짜가 있는지 확인하는 필터로 사용됩니다. count
함수는 이 기간의 총 가방 수를 결정합니다.
{"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")]
설명: 향후 6시간 내에 항공사 응용 프로그램에서 처리할 가방 수를 확인할 수 있습니다. 고객은 가방을 하나 이상 포함할 수 있습니다(즉, bagInfo
배열은 레코드를 하나 이상 포함할 수 있음). bagArrivalDate
는 현재 시간과 다음 6시간 사이여야 합니다. bagInfo
배열의 모든 레코드에 대해 가방 도착 시간이 지금부터 6시간 후 사이의 시간인지 확인합니다. current_time
함수는 지금 시간을 제공합니다. EXISTS 조건은 가방에 다음 6시간 내에 도착 날짜가 있는지 확인하는 필터로 사용됩니다. count
함수는 이 기간의 총 가방 수를 결정합니다.
{"COUNT_NEXT6HOURS":0}
timestamp_diff() 및 get_duration() 함수
timestamp_diff()
두 시간기록 값 사이의 시간(밀리초)을 반환합니다. 결과 유형은 LONG
입니다.
LONG timestamp_diff(TIMESTAMP timestamp1, TIMESTAMP
timestamp2)
- timestamp1: TIMESTAMP 값 또는 TIMESTAMP로 변환할 수 있는 값
- timestamp2: TIMESTAMP 값 또는 TIMESTAMP로 변환할 수 있는 값
- returnvalue: LONG
get_duration()
주어진 시간(밀리초)을 기간 문자열로 변환합니다. 결과 유형은 STRING
입니다.
STRING get_duration(LONG duration_millis)
- duration_millis: 기간(밀리초)
- returnvalue: STRING. 반환된 기간 문자열 형식은 [-](<n> <UNIT>)+이며, 여기서 <UNIT>는 DAY, HOUR, MINUTE, SECOND 및 MILLISECOND일 수 있습니다(예: "1일 2시간" 또는 "-10분 0초 500밀리초").
예를 들면 다음과 같습니다.
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
설명: 항공사 응용 프로그램에서 모든 고객은 소스와 대상 간에 홉/다리를 다르게 가질 수 있습니다. 이 질의에서는 모든 비행 구간 사이에 걸린 시간을 결정합니다. 이는 모든 비행 구간에 대해 bagArrivalDate
와 flightDate
의 차이로 결정됩니다. 기간(일, 시간 또는 분)을 확인하려면 timestamp_diff
함수의 결과를 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)
설명: 수하물 데이터에서 모든 flightLeg
에 작업 배열이 있습니다. 작업 배열에는 세 가지 작업이 있습니다. 배열의 첫 번째 항목에 대한 작업 코드는 체크인/오프로드입니다. 첫 번째 다리의 경우 동작 코드는 체크 인이고 다른 다리의 경우 동작 코드는 홉에서 오프로드입니다. 배열의 두번째 요소에 대한 작업 코드는 BagTag Scan입니다. 위 질의에서 백 태그 스캔과 체크인 시간 간의 작업 시간 차이를 확인합니다. 작업 코드가 체크인 또는 BagScan인 경우에만 contains
함수를 사용하여 작업 시간을 필터링합니다. 첫 번째 항공편 구간에만 체크인 및 백 스캔 세부정보가 있으므로 starts_with
함수를 사용하여 데이터를 필터링하여 소스 코드 fltRouteSrc
만 인출합니다. 기간(일, 시간 또는 분)을 확인하려면 timestamp_diff
함수의 결과를 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
설명: 항공사 응용 프로그램에서 모든 고객은 소스와 대상 간에 홉/다리를 다르게 가질 수 있습니다. 위 예제에서는 가방이 첫 번째 이동점에 도달하는 데 걸린 시간을 결정합니다. 수하물 데이터에서 flightLeg
는 배열입니다. 배열의 첫번째 레코드는 첫번째 전송 지점 세부정보를 나타냅니다. 첫 번째 레코드의 flightDate
는 가방이 소스를 떠나는 시간이고 첫 번째 비행 구간 레코드의 estimatedArrival
는 첫 번째 이동 지점에 도달하는 시간을 나타냅니다. 두 가지의 차이는 가방이 첫 번째 이동점에 도달하는 데 걸리는 시간을 제공합니다. 기간(일, 시간 또는 분)을 확인하려면 timestamp_diff
함수의 결과를 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"}
QueryRequest API 사용 예제
QueryRequest
API 및 SQL 함수를 적용하여 NoSQL 테이블에서 데이터를 인출할 수 있습니다.
질의를 실행하려면 NoSQLHandle.query()
API를 사용합니다.
//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);
질의를 실행하려면 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)
질의를 실행하려면 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)
질의를 실행하려면 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);
질의를 실행하려면 QueryAsync
메소드를 호출하거나 GetQueryAsyncEnumerable
메소드를 호출하고 결과 비동기 열거 가능을 반복할 수 있습니다.
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);