[英]Can we use DATEADD function in Optic API query in MarkLogic
我正在嘗試從視圖中獲取記錄計數,以獲取在某些條件下過去 6 個月的列值的日期范圍示例計數。 我們可以使用 sql 函數 DATEADD 來獲取查詢中的日期范圍嗎?
這是我的光學 API 查詢,我在其中嘗試使用 DATEADD,它給了我錯誤:
xquery version "1.0-ml";
import module namespace op="http://marklogic.com/optic" at "/MarkLogic/optic.xqy";
op:from-view("GTM2_Shipment", "Shipment_View", "")
=> op:where( op:and(( op:eq(op:col('transMode'), 'Rail') , op:sql-condition("dateadd(month,-6,'BookingCreateDt')") )) )
=> op:group-by((), op:count(op:col("Rail_AncillaryCost"), op:col("Ancillary_QuotePrice")))
=> op:result()
錯誤:
OPTIC-INVALARGS: (err:FOER0000) 無效參數:map 參數不是表達式
請讓我知道是什么問題。
不需要引用BookingCreateDt
的列引用。 即使在 SQL 中您不引用間隔值month
,顯然它確實需要引號,以便在解析op:sql-condition
表達式時,它知道它是一個字符串文字。
改變你的表達方式:
op:sql-condition("dateadd(month, -6, 'BookingCreateDt'))
至:
op:sql-condition("dateadd('month', -6, BookingCreateDt)
有趣的是,您可以在光學運行時訪問各種項目。 已映射 xQuery 庫以在計划執行期間使用。
請參閱此處:表達式函數所需的 XQuery 庫是您的朋友
對於下面的示例,我以 2 種不同的方式混合了最小和最大日期來顯示使用情況。
xquery version "1.0-ml";
import module namespace op="http://marklogic.com/optic"
at "/MarkLogic/optic.xqy";
import module namespace ofn="http://marklogic.com/optic/expression/fn"
at "/MarkLogic/optic/optic-fn.xqy";
import module namespace osql="http://marklogic.com/optic/expression/sql"
at "/MarkLogic/optic/optic-sql.xqy";
let $three-years-ago := xs:date(fn:current-date()-xs:yearMonthDuration("P3Y"))
let $plan := op:from-literals(
(
map:new()=>map:with("name","Freddy Llama")=>map:with("eyeColor", "purple")=>map:with("dateOfBirth", xs:date("2014-12-10")),
map:new()=>map:with("name", "Sandy Llama")=>map:with("eyeColor", "green")=>map:with("dateOfBirth", xs:date("2010-04-10")),
map:new()=>map:with("name", "Didi Llama")=>map:with("eyeColor", "black")=>map:with("dateOfBirth", xs:date("2020-06-12"))
),
"llamaData")
=>op:where(op:lt(op:view-col("llamaData", "dateOfBirth"), $three-years-ago))
=>op:where(op:gt(op:view-col("llamaData", "dateOfBirth"), osql:dateadd('year',-9, ofn:current-date())))
return $plan=>op:result()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.