如何在pyral中比较日期(在查询条件中)

时间:2015-12-27 14:53:03

标签: python pyral

我需要找到未更新的任务。

标准如下:

'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'

我没有得到任何结果。

拉力赛任务对象的LastUpdateDate2015-12-16T09:54:30.600Z 8.0

如何比较查询条件中的LastUpdateDate

2 个答案:

答案 0 :(得分:1)

我在多个参数中遇到了同样的问题,最后我必须添加括号才能使其工作。

(('iteration.Name = \"iterationName\") AND (State!=Completed)) AND (LastUpdateDate<'+str(datetime.datetime.now())+"'")

那里可能有太多的括号,我认为关键是要围绕前两个条件获得一个支架;如果添加另一个条件,它将看起来像这样

((((condition1) AND (condition2)) AND (condition3)) AND (condition4))

答案 1 :(得分:0)

很久以前就提出了问题,但对于那些希望使用日期为 pyral 的查询的人来说可能会有用。

问题中的代码有几个问题:

  1. datetime.datetime.now()可能不会以Rally所需的格式返回日期,因此最好使用strftime来获取正确的格式

  2. 多个条件需要有正确的括号;例如:((((condition1) AND (condition2)) AND (condition3)) AND (condition4))

  3. LastUpdateDate必须在当前日期之前(除非用户能够跳转到将来)。

  4. 最好将日期设为双引号(")而不是单引号('

  5. 以下是我发现的用于识别过去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))