2

チケットの作成日を含むレポートを作成するのに非常に苦労しています。

これが私のsqliteクエリです(私は直接データベースにクエリを実行しています)

.header on
.mode csv
.output opentickets.csv
SELECT DISTINCT
   id AS ticket, summary, status, priority, t.type AS type, 
   owner, time as created

  FROM ticket t, ticket_custom q
  LEFT JOIN enum p ON p.name = t.priority AND p.type = 'priority'
  WHERE t.id = q.ticket AND status <> 'closed'
 ORDER BY  priority, time;

しかし、作成時に取得した値はガベージです。2012-07-03 を取得する必要があるときに 1341324096360000 を取得します

私はUNIXエポック時間変換を試みました...クエリ:

.header on
.mode csv
.output opentickets.csv
SELECT DISTINCT
   id AS ticket, summary, status, priority, t.type AS type, 
   owner, datetime(time, 'unixepoch') as created

  FROM ticket t, ticket_custom q
  LEFT JOIN enum p ON p.name = t.priority AND p.type = 'priority'
  WHERE t.id = q.ticket AND status <> 'closed'
 ORDER BY  priority, time;

私は得る: -1413-03-01 13:07:12

私は何が欠けていますか?

4

2 に答える 2

5

CLは、時間がマイクロ秒単位で保存されていることを示しています。スキーマでは、時間のフィールドがint64であり、.12のリリースノートでは、時間が「エポックからの秒数」から「エポックからのマイクロ秒」に変更されたことがわかります。

Tracクエリで時間を表示した経験については、変換を行う必要はありませんでした。これは、過去7日間に変更されたすべてのチケットを表示するために使用するクエリです。ご覧のとおり、selectの一部としてチケットの変更時刻を表示し、Tracが正しくフォーマットします。Tracは、作成、変更、日付、時刻フィールドを日付および/または時刻として自動フォーマットします。詳細については、このTracwikiページを参照してください。

    SELECT 
tc.Ticket AS ticket, 
tc.Time as time, 
c.value as  __group__,
ifnull(tc.Newvalue,0) as total,
tc.Author  AS author,         
tc.Field as field     
from ticket_change tc 
LEFT JOIN ticket t on t.id = tc.ticket
LEFT JOIN ticket_custom c on c.ticket = tc.ticket and c.name= 'customer'
LEFT JOIN ticket_custom tt on tt.ticket = tc.ticket and tt.name = 'totalhours'
where field = 'hours' and c.Value is not null
and tc.Time > strftime('%s',CURRENT_DATE-7) +0
and tc.Time < strftime('%s',CURRENT_DATE) +0
and tc.Author = $USER
and tt.value is not null

特別なフォマッティングを行う場合は、SQLiteのドキュメントを時間どおりに確認してください。ただし、ここに簡単な例を示します。

strftime('%m/%d/%Y', time / 1000000, 'unixepoch', 'localtime') 

これがお役に立てば幸いです。

于 2012-10-24T12:57:38.357 に答える
2

Unixタイムスタンプは秒単位ですが、これらの値はマイクロ秒のようです。

> SELECT datetime(1341324096360000 / 1000000, 'unixepoch');
2012-07-03 14:01:36
于 2012-10-24T08:17:32.763 に答える