2009-02-25 39 views
3

我希望创建一份报告,列出在特定时间段内关闭的所有票证。如何在Trac中的特定日期创建关闭的票据报告

伪代码将会像

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

我不能解决的部分是date_closed = 'january 2009'

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

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

回答

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

如果您也知道这一年,而不是strftime的你最好使用像vartec的表达建议:

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') 
3
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')是这个月的最后一天。

+0

最后更改可能是其他状态。 – kmkaplan 2009-02-25 12:58:13

+0

好点kmkaplan。然而就我而言,我对目前关闭的门票很感兴趣,所以“关闭”总是最后的改变。无论如何。你们两个都帮了我很多。非常感谢。 – 2009-02-25 13:31:58

0

此外,关于表的结构,在这里你去:

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