我需要找到未更新的任务。
标准如下:
'iteration.Name = \"iterationName\" and State!=Completed and LastUpdateDate<'+str(datetime.datetime.now())+"'"
这将导致:
iteration.Name = "iterationName" and State!=Completed and LastUpdateDate<'2015-12-27 20:17:08.769000'
我没有得到任何结果。
拉力赛任务对象的LastUpdateDate
为2015-12-16T09:54:30.600Z 8.0
如何比较查询条件中的LastUpdateDate
?
答案 0 :(得分:1)
我在多个参数中遇到了同样的问题,最后我必须添加括号才能使其工作。
(('iteration.Name = \"iterationName\") AND (State!=Completed)) AND (LastUpdateDate<'+str(datetime.datetime.now())+"'")
那里可能有太多的括号,我认为关键是要围绕前两个条件获得一个支架;如果添加另一个条件,它将看起来像这样
((((condition1) AND (condition2)) AND (condition3)) AND (condition4))
答案 1 :(得分:0)
很久以前就提出了问题,但对于那些希望使用日期为 pyral 的查询的人来说可能会有用。
问题中的代码有几个问题:
datetime.datetime.now()
可能不会以Rally所需的格式返回日期,因此最好使用strftime
来获取正确的格式
多个条件需要有正确的括号;例如:((((condition1) AND (condition2)) AND (condition3)) AND (condition4))
LastUpdateDate
必须在当前日期之前(除非用户能够跳转到将来)。
最好将日期设为双引号("
)而不是单引号('
)
以下是我发现的用于识别过去5天内未更新但尚未完成的任务的代码。
iter_name = "2018-Iteration-4"
five_days_ago = datetime.datetime.now() - datetime.timedelta(days=5)
str_date = five_days_ago.strftime("%Y-%m-%dT%H:%M:%S.%fZ")
tasks_not_updated = rally.get(
'Task',
query = '(((iteration.Name = "%s")'
' and (State != Completed))'
' and (LastUpdateDate < "%s"))' % (iter_name, str_date)
)
for task in tasks_not_updated:
print("%s (%s)" % (task.Name, task.State))