使用日期精度运行查询时无法提供带有日期的时间

问题描述 投票:0回答:5

我正在研究 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);

以上是我的代码。

提前致谢

c# sql tfs
5个回答
4
投票

您确定您正在使用以下行吗:

    Query qry = new Query(myworkitemstore, myquery, mycontext, false);

当最后一个参数设置为 false 时,您不应该收到此错误。仅当您将该参数设置为 true 或根本不提供该参数时,才会发生该错误。默认为 true。

参考: http://teamfoundation.blogspot.com/2008/01/specifying-date-and-time-in-wiql.html


0
投票

只是一个建议 - 您是否尝试过在 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 查询...

我还没有尝试过,但这可行吗?


0
投票

我在尝试查询最新更新时遇到了同样的问题,并通过执行以下操作解决了该问题

// 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);

我做了一些非常类似的事情来检索测试结果


0
投票

我遇到了同样的问题,Ravianth 的解决方案对我有用。问题可能出在日期格式上。就我而言,将日期转换为“yyyy-MM-dd HH:mm:ss”格式是有效的。


0
投票

你可以这样做:

Wiql wiql = new Wiql() { Query = wiqlQuery };
WorkItemQueryResult? queryResult = await witClient.QueryByWiqlAsync(wiql, projectName, true);

注意:函数 QueryByWiqlAsync 的最后一个参数代表使用时间精度,您应该将其设置为“true”。

© www.soinside.com 2019 - 2024. All rights reserved.