3

特定の期間にクローズされたすべてのチケットを一覧表示するレポートを作成したいと考えています。

擬似コードは次のようになります

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

解決できない部分はdate_closed = 'january 2009'.

Tracでそれを行う方法はありますか?

特定の SQL 構文には興味がありません。時間制限を自分で記述できます。私が確信していないのは、Trac の db 構造です。

4

3 に答える 3

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')の最後の日です。

于 2009-02-25T12:44:00.880 に答える
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')
于 2009-02-25T12:54:21.370 に答える
0

また、テーブル構造に関しては、次のようになります。

CREATE TABLE ticket_change ( 
    ticket   INTEGER,
    time     INTEGER,
    author   TEXT,
    field    TEXT,
    oldvalue TEXT,
    newvalue TEXT,
    UNIQUE ( ticket, time, field ) 
);
于 2011-04-04T03:35:56.543 に答える