Azure DevOps 工作项中日期之间的天数(按查询)
Days between dates in Azure DevOps work items by query
我想做什么
我是 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 等受支持的宏才能在查询编辑器中用于计算。
我阅读了以下官方参考资料,但无法找到解决方案。
- Query by date or current iteration
- Query fields, operators, and macros
- Lead time and cycle time widgets
如查询无解,欢迎补充。
这不能通过查询来完成。您将需要使用 rest api 作为解决方法。但是比较复杂,可能达不到和Query一样的效果。
1,首先你可以使用work item wiql api查询那些[Microsoft.VSTS.Common.ActivatedDate] > [System.CreatedDate]
的项目以获得workitems
的id
2、然后可以使用work item list api列出上面步骤查询到的那些工作项的字段详情。
3、最后使用powershell脚本过滤那些Activated Date和Created Date之间持续时间超过5天的工作项
请检查 powershell 脚本中的以下示例:
For {PAT} please check here to get a Personal Access Token to Authenticate below API calling
# 查询那些 [Microsoft.VSTS.Common.ActivatedDate] > [System.CreatedDate] 的项目并获取工作项目的 ids
$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)}
希望以上内容对您有所帮助!
我想做什么
我是 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 等受支持的宏才能在查询编辑器中用于计算。
我阅读了以下官方参考资料,但无法找到解决方案。
- Query by date or current iteration
- Query fields, operators, and macros
- Lead time and cycle time widgets
如查询无解,欢迎补充。
这不能通过查询来完成。您将需要使用 rest api 作为解决方法。但是比较复杂,可能达不到和Query一样的效果。
1,首先你可以使用work item wiql api查询那些[Microsoft.VSTS.Common.ActivatedDate] > [System.CreatedDate]
的项目以获得workitems
2、然后可以使用work item list api列出上面步骤查询到的那些工作项的字段详情。
3、最后使用powershell脚本过滤那些Activated Date和Created Date之间持续时间超过5天的工作项
请检查 powershell 脚本中的以下示例:
For {PAT} please check here to get a Personal Access Token to Authenticate below API calling
# 查询那些 [Microsoft.VSTS.Common.ActivatedDate] > [System.CreatedDate] 的项目并获取工作项目的 ids
$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)}
希望以上内容对您有所帮助!