【问题标题】:How to create report with tickets closed at certain date in Trac如何在 Trac 中的特定日期创建带有关闭票证的报告
【发布时间】:2023-03-09 20:30:01
【问题描述】:

我希望创建一个报告,列出在特定时间段内关闭的所有工单。

伪代码是这样的

SELECT * FROM tickets
WHERE closed AND date_closed = 'january 2009'

我无法解决的部分是date_closed = 'january 2009'

有没有办法在 Trac 中做到这一点?

我对特定的 SQL 语法不感兴趣,我可以自己编写时间限制。我不确定的是 Trac 的 db 结构。

【问题讨论】:

    标签: sqlite trac ticket-system


    【解决方案1】:
    SELECT * FROM ticket
    WHERE status='closed' 
      AND date(changetime,'unixepoch') 
          BETWEEN date('YYYY-MM-DD') /* <- here goes your start date */
              AND date('YYYY-MM-DD') /* <- here goes your end date */
    

    如果你想要一个特定的月份:

    SELECT * FROM ticket
    WHERE status='closed' 
      AND date(changetime,'unixepoch') 
          BETWEEN date('2009-01-01','start of month') 
              AND date('2009-01-01','start of month','+1 month','-1 day') 
    

    其中date('2009-01-01','start of month') 是按日期给出的月份的第一天,date('2009-01-01','start of month','+1 month','-1 day') 是该月的最后一天。

    【讨论】:

    • 最后一次更改可能是针对状态以外的其他内容。
    • 好点kmkaplan。但是就我而言,我对此时关闭的票很感兴趣,因此“关闭”始终是最后的更改。反正。你们两个都帮了我很多。非常感谢。
    • @JS:即使在这种情况下,您也可以在关闭时更改票证,从而更改其更改时间。
    【解决方案2】:
    SELECT DISTINCT ticket.* FROM ticket, ticket_change
     WHERE ticket.id = ticket_change.ticket
       AND ticket_change.field = 'status'
       AND ticket_change.newvalue = 'closed'
       AND strftime('%m', ticket_change.time, 'unixepoch') = '01';
    

    如果你也知道年份,最好使用 vartec 建议的表达式,而不是 strftime:

    SELECT DISTINCT ticket.* FROM ticket, ticket_change
     WHERE ticket.id = ticket_change.ticket
       AND ticket_change.field = 'status'
       AND ticket_change.newvalue = 'closed'
       AND date(ticket_change.time,'unixepoch') 
           BETWEEN date('2009-01-01','start of month') 
               AND date('2009-01-01','start of month','+1 month','-1 day')
    

    【讨论】:

    • 看起来 0.12 版切换到在时间字段中使用微秒。您需要使用 (ticket_change.time/1000000) 才能使用 unixepoch 正确转换。
    【解决方案3】:

    另外,关于表结构,请看:

    CREATE TABLE ticket_change ( 
        ticket   INTEGER,
        time     INTEGER,
        author   TEXT,
        field    TEXT,
        oldvalue TEXT,
        newvalue TEXT,
        UNIQUE ( ticket, time, field ) 
    );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多