Trac Reportでの日付の扱い(その1)

チケットのDB(ticket/ticket_change)の日付項目はUnixタイムスタンプなので比較しようとすると変換が必要で、幾つか書き方のパターンがあるけど単純比較の場合は

SELECT status, resolution,id AS ticket, summary, priority, severity, reporter,
       time AS created, changetime AS modified
FROM ticket
WHERE date(changetime,'unixepoch','localtime') > '2008-06-30'

のようにする。そうすると6月30日以降に変更されたチケットの一覧が表示される。

ここで気をつけなきゃ行けないのは時間がUTCで記録されているので、ちゃんとunixepochlocaltimeを指定してあげないと、時差の分だけ微妙に抽出結果が変わってくるので注意が必要。

これを応用して

SELECT status, resolution,id AS ticket, summary, priority, severity, reporter,
       time AS created, changetime AS modified
FROM ticket
WHERE date(changetime,'unixepoch','localtime') > '$DT'

としてあげると日付部分がパラメータになり、wiki

[report:22?DT=2008-06-01 ひげほげ]

と書いて一つのレポートで可変の抽出が出来るので結構便利。