我使用IBM的教程
为ftsearch创建了一个xpage元素我的请求:是否有可能有2个日期字段(作为搜索的输入要求)来查找那些创建日期在包含这2个日期的区间内的文档?
我应该创建一个计算字段dtCreated
,我将存储创建日期,然后在视图的search
属性中我应该添加如下内容:
var tmpArray = new Array("");
var cTerms = 0;
if (sessionScope.searchDate1) && (sessionScope.searchDate2) {
tmpArray[cTerms++] = "(Field dtCreated > \"" + sessionScope.searhcDate1 + "\")" && "(Field dtCreated < \"" + sessionScope.searhcDate2 + "\")";
}
....
....
还是有另一种选择?
我的2个会话变量有Short (5/5/14) Date format
。此外,我对这2个日期(会话变量)的默认值为""
,但当然我在点击Submit
按钮之前添加了一些值。
谢谢你的时间!
答案 0 :(得分:5)
您可以使用特殊字段_creationDate
作为创建日期(请参阅Tommy的回答)。基于此,以下示例查询将在Notes客户端中起作用:
Field _creationDate > 01-01-2014 AND Field _creationDate < 01-03-2014
为了使此查询能够与您的特定代码一起使用,请执行以下操作:
var tmpArray = new Array("");
var cTerms = 0;
var dateFormatter = new java.text.SimpleDateFormat( "dd-MM-yyyy" );
if (sessionScope.searchDate1) && (sessionScope.searchDate2) {
tmpArray[cTerms++] = "Field _creationDate > " + dateFormatter.format(sessionScope.searchDate1) + " AND Field _creationDate < " + dateFormatter.format(sessionScope.searchDate2);
}
答案 1 :(得分:0)
如果你想做一个FTSearch,可以使用_CreationDate
E.g。 (可能存在拼写错误):
tmpArray [cTerms ++] =“(Field _creationDate&gt;”+ sessionScope.searhcDate1 +“)AND(Field _creationDate&lt;”+ sessionScope.searhcDate2 +“)”;
或者我的首选语法:
tmpArray [cTerms ++] =“[_ createDate&gt;” + sessionScope.searhcDate1 +“] AND [_creationDate&lt;” + sessionScope.searhcDate2 +“]”;
答案 2 :(得分:0)
以汤米的回答为基础:
具体来说,尝试“yyyy / m / d”作为格式。如果sessionScope中的那些值是java.util.Date(日期字段使用的类型),你可以尝试这样的事情(键入我的头顶,而不是在应用程序中,所以我为打字错误道歉):
var tmpArray = [];
var cTerms = 0;
if(sessionScope.searchDate1 && sessionScope.searchDate2) {
var formatter = new java.text.SimpleDateFormat("yyyy/M/d");
tmpArray[cTerms++] = "[_CreationDate] >= " + formatter.format(sessionScope.searchDate1) + " and [_CreaationDate] <= " + formatter.format(sessionScope.searchDate2)
}
您最终想要的是FT查询,例如:
[_CreationDate] >= 2014/1/1 and [_CreationDate] <= 2014/2/1