Sqlite 如何在Trac中创建在特定日期关闭票据的报告

Sqlite 如何在Trac中创建在特定日期关闭票据的报告,sqlite,trac,ticket-system,Sqlite,Trac,Ticket System,我希望创建一个报告,列出在某段时间内关闭的所有票据 伪代码如下 SELECT * FROM tickets WHERE closed AND date_closed = 'january 2009' 我无法解析的部分是date\u closed='2009年1月' 有没有办法在Trac中实现这一点 我对特定的SQL语法不感兴趣,我可以自己编写时间限制。我不确定的是Trac的db结构 SELECT * FROM ticket WHERE status='closed' AND date(c

我希望创建一个报告,列出在某段时间内关闭的所有票据

伪代码如下

SELECT * FROM tickets
WHERE closed AND date_closed = 'january 2009'
我无法解析的部分是
date\u closed='2009年1月'

有没有办法在Trac中实现这一点

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

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 */
其中,
date('2009-01-01','start of month')
是由日期指定的月份的第一天,
date('2009-01-01','start of month','+1 month','-1天')
是该月份的最后一天

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

另外,关于表结构,您可以这样做:

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

最后一个改变可能不是为了地位。卡普兰说得对。然而,在我的情况下,我对现在关闭的票感兴趣,所以“关闭”总是最后的更改。无论如何你俩都帮了我大忙。非常感谢。@JS:即使在这种情况下,您也可以在关闭时更改票证,从而更改票证的更改时间。看起来0.12版在时间字段中改为使用微秒。您需要使用
(ticket\u change.time/1000000)
使用unixepoch正确转换。
CREATE TABLE ticket_change ( 
    ticket   INTEGER,
    time     INTEGER,
    author   TEXT,
    field    TEXT,
    oldvalue TEXT,
    newvalue TEXT,
    UNIQUE ( ticket, time, field ) 
);