2

変更日で RTC をクエリしたい。私のクエリは、変更日が指定された日付と時刻と同じであることを確認することですが、取得している応答は指定された日付に基づいており、時間を無視しています。

応答:

照会日: 2015 年 8 月 7 日 15:44:09

Id: 2583 変更日: 2015-08-07 14:43:19.157

Id: 2582 変更日: 2015-08-07 14:43:19.419

理想的には、指定された時間前に両方のレコードが応答として受信されないようにする必要があります。

以下は私のコードです:

IQueryableAttributeFactory factory = QueryableAttributes.getFactory( IWorkItem.ITEM_TYPE ); 

IQueryableAttribute recAttr1 = factory.findAttribute(projectArea, IItem.MODIFIED_PROPERTY, auditableClient, null ); 
IQueryableAttribute recAttr2 = factory.findAttribute(projectArea, IWorkItem.TYPE_PROPERTY, auditableClient, null );     

Date date = new Date();
date.setDate(date.getDate()-6);
DateFormat df = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
String reportDate = df.format(date);
System.out.println("Date: "+reportDate);
Timestamp timeStamp = new Timestamp(date.getTime()); 

AttributeExpression recExpr1 = new AttributeExpression(recAttr1, AttributeOperation.EQUALS, timeStamp ); 

Term term= new Term(Operator.AND); 
term.add(recExpr1); 

IQueryClient queryClient = (IQueryClient) teamRepository.getClientLibrary(IQueryClient.class); 
IQueryResult<IResolvedResult<IWorkItem>> result = queryClient.getResolvedExpressionResults(projectArea, (Expression)term, IWorkItem.FULL_PROFILE); 
System.out.println("This is total number: "+result.getResultSize(monitor).getTotal()+"\n");                 

while(result.hasNext(null)){ 
    IResolvedResult<IWorkItem> resolvedWorkItem = result.next(null); 
    IWorkItem workItem = resolvedWorkItem.getItem();
    Date date1 = resolvedWorkItem.getItem().modified(); 
    System.out.println("Id: "+workItem.getId());
    System.out.println("Modified date :"+date1.toString()+"\n"); 
}   

日付だけでなく、時間でも結果を取得できますか?

RTC のバックエンド ロジックは時間を完全に無視し、日付のみに基づいてデータベースにクエリを実行していると強く感じます。

4

1 に答える 1

0

私はまったく同じ問題を抱えています。結果がどこかにキャッシュされているのではないかと思ったのですが、そうではありませんでした。

RTC クエリを介してこれを行う方法は見つかりませんでしたが、RTC クエリが返された後、コードでこれらのレコードを除外できるはずです。検索の実行に使用した時間を節約し、それを使用して、次のようにしてレコードをスキップします。

if (workItem.modified().getTime() < lastModified)
  continue;

これが理想的ではないことはわかっていますが、少なくとも、目的のセットを操作する方法があります。

于 2016-07-14T15:21:43.513 に答える