2016-12-14 8 views
1

私はエポックミリ秒の時間間隔を記録しています。以下に示すように:分割された時間帯別

start_time | end_time  | duration 
----------------------------------------- 
1481460261912 | 1481460716464 | 454552 
1481461049219 | 1481461291862 | 242643 
.... 

この時間は、エポックとして保存されているため、UTCです。今、私は3つのクエリによって、このような日の期間、localtimeのために、この時間を変換することができる午前:

1)

SELECT sum(duration) FROM duration_logs 
    WHERE date(datetime(start_time/1000, 'unixepoch', 'localtime')) = date('now') 
    AND date(datetime(end_time/1000, 'unixepoch', 'localtime')) = date('now') 

2)

SELECT end_time-strftime('%s','now','start of day','utc')*1000 FROM duration_logs 
    WHERE date(datetime(start_time/1000, 'unixepoch', 'localtime')) != date('now') 
    AND date(datetime(end_time/1000, 'unixepoch', 'localtime')) = date('now') 

3)分割の2番目とは逆の開始時刻

3つの期間の合計私はその日の期間を得ることができます。

ただし、指定された日付でこれを時間で分割する必要があります。具体的には、グラフ上にプロットし、最も忙しい時間を示します。

私はそれを行う方法がちょっとありません。誰かが正しい方向に私を導くことができますか?

EDIT:ここでの主な問題は、期間が複数時間である場合の期間を含めることです。たとえば、start_timeは12:30:00、end_timeは13:30:00です。次に、12-13時間は30分、13-14は30分を含める必要があります。

+0

すべての時間に行を取得するには、24時間すべての別のテーブルを作成し、それをログテーブルと結合します。 –

+0

@ CL。だから、私が理解したことは、両方のテーブルにログオンする必要があるということですか? – kirtan403

+0

いいえ。他の表には正確に24行が含まれています。 –

答えて

0

これは非常に複雑なクエリにつながる可能性があるため、クエリではなくコードで分割することを選択しました。

ただし、誰でもそのクエリを作成できる場合は、私は一見するとうれしいです。