我正在研究 tfs 工作项。我正在尝试使用查询获取工作项集合,但出现以下错误。有什么可以帮我的吗?
[System.ChangedDate] > '4/19/06 1:00 PM' 返回以下错误“使用日期精度运行查询时无法提供带有日期的时间。该错误是由 «[System.ChangedDate”引起的] >“2006 年 4 月 19 日下午 1:00”»。”但此字段具有日期时间精度。对于为什么会发生这种情况有什么建议或答案吗?
var myquery= " SELECT [System.Id]" +
" FROM WorkItems " +
" WHERE " +
" [System.TeamProject] = '" + ivSettings.Project + "'" +
" AND [System.ChangedDate] = '" + ivSettings.LastSyncGen + "'" + " " +
" ORDER BY [System.Id]"
, null,false);
Query qry = new Query(myworkitemstore, myquery, mycontext, false);
ICancelableAsyncResult car = qry.BeginQuery();
WorkItemCollection items = qry.EndQuery(car);
以上是我的代码。
提前致谢
您确定您正在使用以下行吗:
Query qry = new Query(myworkitemstore, myquery, mycontext, false);
当最后一个参数设置为 false 时,您不应该收到此错误。仅当您将该参数设置为 true 或根本不提供该参数时,才会发生该错误。默认为 true。
参考: http://teamfoundation.blogspot.com/2008/01/specifying-date-and-time-in-wiql.html
只是一个建议 - 您是否尝试过在 TFS API 中执行此查询
var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://localhost:8088/tfs"));
tfs.EnsureAuthenticated();
var workItemStore = tfs.GetService<WorkItemStore>();
var query = string.Format(@" Select [Id], [Work Item Type], [Title], [State], [System.ChangedDate] From WorkItems", title);
List<WorkItem> workItems = workItemStore.Query(query)
然后对 System.Changed Date 执行 LINQ 查询...
我还没有尝试过,但这可行吗?
我在尝试查询最新更新时遇到了同样的问题,并通过执行以下操作解决了该问题
// defined elsewhere
private DateTime lastUpdated;
string consult = "select * from WorkItem where [Created Date] > ' " + lastUpdated.ToString("MM/dd/yy") +
"' AND [Work Item Type] = 'Test Case'";
IEnumerable<ITestCase> tcc = testManagementTeamProject.TestCases.Query(consult).Where(tp => tp.DateCreated > lastUpdated);
我做了一些非常类似的事情来检索测试结果
我遇到了同样的问题,Ravianth 的解决方案对我有用。问题可能出在日期格式上。就我而言,将日期转换为“yyyy-MM-dd HH:mm:ss”格式是有效的。
你可以这样做:
Wiql wiql = new Wiql() { Query = wiqlQuery };
WorkItemQueryResult? queryResult = await witClient.QueryByWiqlAsync(wiql, projectName, true);
注意:函数 QueryByWiqlAsync 的最后一个参数代表使用时间精度,您应该将其设置为“true”。