Marklogic 使用构造字符串

Marklogic 使用构造字符串,marklogic,marklogic-8,Marklogic,Marklogic 8,我想知道为什么werktwel中的这个字符串很好,但是werktniet中的字符串在我的查询中使用时却不好 当我记录它们时,我看到了同样的事情“2016-03-21*”并且当我记录时,该类型同时用于字符串和 // create data declareUpdate(); xdmp.documentInsert( "/example.json", {"meting": "783", "bericht": "553", "plant": "01", "timestamp

我想知道为什么
werktwel
中的这个字符串很好,但是
werktniet
中的字符串在我的查询中使用时却不好

当我记录它们时,我看到了同样的事情<代码>“2016-03-21*”并且当我记录时,该类型同时用于
字符串和

// create data

declareUpdate();
xdmp.documentInsert(
       "/example.json",
       {"meting": "783", "bericht": "553", "plant": "01", "timestamp": "2016-03-21T22:32:30.361756"},
       xdmp.defaultPermissions(),
       xdmp.defaultCollections(),
       10)

// query
var nu = new Date();
var beteredatum = nu.getFullYear() + "-" + (Number(nu.getMonth())+1) + "-" + nu.getDate();
var werkniet = beteredatum + "*";
var werktwel = "2016-03-21*";
var a = cts.search(cts.jsonPropertyValueQuery("timestamp", werkniet, "wildcarded")).toArray();
xdmp.log(xdmp.type(werkniet));
a

我处理这些月的方式不太好。这样很好用。修复程序位于getMonth的切片中

// query

declareUpdate();
xdmp.documentInsert(
       "/example.json",
       {"meting": "783", "bericht": "553", "plant": "01", "timestamp": "2016-03-21T22:32:30.361756"},
       xdmp.defaultPermissions(),
       xdmp.defaultCollections(),
       10)

// query
var nu = new Date();
var beteredatum = nu.getFullYear() + "-" + ("0" + (nu.getMonth() + 1)).slice(-2) + "-" + nu.getDate();
var werkniet = beteredatum + "*";
var werktwel = "2016-03-21*";
var a = cts.search(cts.jsonPropertyValueQuery("timestamp", werkniet, "wildcarded")).toArray();
xdmp.log(xdmp.type(werkniet));
a

我处理这些月的方式不太好。这样很好用。修复程序位于getMonth的切片中

// query

declareUpdate();
xdmp.documentInsert(
       "/example.json",
       {"meting": "783", "bericht": "553", "plant": "01", "timestamp": "2016-03-21T22:32:30.361756"},
       xdmp.defaultPermissions(),
       xdmp.defaultCollections(),
       10)

// query
var nu = new Date();
var beteredatum = nu.getFullYear() + "-" + ("0" + (nu.getMonth() + 1)).slice(-2) + "-" + nu.getDate();
var werkniet = beteredatum + "*";
var werktwel = "2016-03-21*";
var a = cts.search(cts.jsonPropertyValueQuery("timestamp", werkniet, "wildcarded")).toArray();
xdmp.log(xdmp.type(werkniet));
a
考虑使用:

考虑使用:


你以前试过的时候,我怀疑月份是10月、11月或12月。(10,11,12). 请注意,您的修复程序还有一个“0”前缀,强制月份为2或更多位数,并转换为字符串。因此片(-2)将始终产生最后2位数字

然而,我建议使用内置的日期和日期时间函数,而不是尽可能地进行字符串操作,尤其是对于子组件。 从xs.date和xs.dateTime的转换遵循ISO8601规范,这些规范用数字固定,因此更容易分解然后组合。 例如“2016-02-21T11:22:33.012-03:00”(日期时间)或“2016-01-21”

将dateTime的日期(Beteredatam)部分作为字符串获取的示例可以简化为

   var werkniet = fn.adjustDateToTimezone( fn.currentDate(), null ) + "*"

如果使用数字到字符串的转换,我建议使用定义良好的fn.formatNumber(或xdmp.formatNumber()),它提供0填充到固定宽度

e、 g以0填充的数字形式获取日期

   fn.formatNumber(fn.dayFromDate( fn.currentDate() ),"00")

如果你坚持使用内置的fn。或者xdmp。日期函数它们的互操作性很好,没有+/-1,定义良好的字符串到数字或日期转换,并为所有预期日期的marklogic函数生成正确的格式。

以前尝试过它时,我怀疑月份是10月、11月或12月。(10,11,12). 请注意,您的修复程序还有一个“0”前缀,强制月份为2或更多位数,并转换为字符串。因此片(-2)将始终产生最后2位数字

然而,我建议使用内置的日期和日期时间函数,而不是尽可能地进行字符串操作,尤其是对于子组件。 从xs.date和xs.dateTime的转换遵循ISO8601规范,这些规范用数字固定,因此更容易分解然后组合。 例如“2016-02-21T11:22:33.012-03:00”(日期时间)或“2016-01-21”

将dateTime的日期(Beteredatam)部分作为字符串获取的示例可以简化为

   var werkniet = fn.adjustDateToTimezone( fn.currentDate(), null ) + "*"

如果使用数字到字符串的转换,我建议使用定义良好的fn.formatNumber(或xdmp.formatNumber()),它提供0填充到固定宽度

e、 g以0填充的数字形式获取日期

   fn.formatNumber(fn.dayFromDate( fn.currentDate() ),"00")
如果你坚持使用内置的fn。或者xdmp。日期函数它们的互操作性很好,没有+/-1,定义良好的字符串到数字或日期转换,并为所有预期日期的marklogic函数生成正确的格式