我是Azure DevOps Services用户。
是否可以通过Azure Boards查询来计算工作项中日期之间的持续时间?
或者,日期之间是否有日期字段?
例如,我想显示一个工作项列表,其激活日期和创建日期之间的持续时间超过5天。
我尝试了Activated Date > [Field] Created Date + 5
,但结果是
TF51005: The query references a field that does not exist. The error is caused by Created Date + 5.
我想知道是否只有支持的宏(如@Today或@StartOfDay)才能在查询编辑器中用于计算。
我阅读了以下官方参考,但找不到解决方法。
如果查询中没有解决方案,欢迎提出新的想法。
答案 0 :(得分:1)
这不能通过查询完成。您将需要使用rest api作为解决方法。但这很复杂,可能无法达到与Query相同的效果。
1,首先,您可以使用work item wiql api查询[Microsoft.VSTS.Common.ActivatedDate] > [System.CreatedDate]
以获得工作项ID的那些项目
2,然后您可以使用work item list api列出上一步所查询的那些工作项的字段详细信息。
3,最后一次使用powershell脚本来过滤激活日期和创建日期之间的持续时间超过5天的工作项
请在powershell脚本中检查以下示例:
对于{PAT},请检查here以获取个人访问令牌,以在API调用下进行身份验证
#查询[Microsoft.VSTS.Common.ActivatedDate]> [System.CreatedDate]的那些项,并获取工作项的ID
$qurl = "https://dev.azure.com/{org}/{proj}/_apis/wit/wiql?api-version=5.1"
$WIQL_query = "Select [System.Id], [System.Title], [System.State],[Microsoft.VSTS.Common.ActivatedDate],[System.CreatedDate] From WorkItems Where [Microsoft.VSTS.Common.ActivatedDate] > [System.CreatedDate]"
$body = @{ query = $WIQL_query }
$bodyJson=@($body) | ConvertTo-Json
$pat = {PAT}
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($pat)"))
$result = Invoke-RestMethod -Uri $qurl -Headers @{authorization = "Basic $base64AuthInfo"} -Method post -ContentType "application/json" -Body $bodyJson
#获取工作室ID
$ids = $result.workItems | select id | foreach{ $_.id }
$id= '{0}' -f ($ids -join ",")
#使用工作项列表api列出这些工作项的字段详细信息
$url = "https://dev.azure.com/{ORG}/{PROJ}/_apis/wit/workitems?ids=$($id)&api-version=5.1"
$result1 = Invoke-RestMethod -Uri $url -Headers @{authorization = "Basic $base64AuthInfo"} -Method get
#过滤激活日期和创建日期之间的持续时间超过5天的那些工作项。
$result1.value.fields | where {[datetime]$_.'Microsoft.VSTS.Common.ActivatedDate' -gt ([datetime]$_.'System.CreatedDate').AddDays(5)}
希望上面有帮助!