2016-04-24 103 views
0

我將數據存儲在分鐘,小時,日,月和年桶中。所有數據都以UTC格式保存。假設客戶端處於PDT時間(-07:00 UTC)時間系列數據和UTC轉換

如果客戶想要查詢其時區中小時總計4/23/2016 7:00pm,他們會將時間轉換爲UTC - 4/24/2016 2:00am並進行查詢。圖片以供參考。

Hour conversion from PDT to UTC

這適用於小時和分鐘桶完美的罰款。但是,讓我們看看客戶需要一天的總和的情況。如果客戶需要4/24/2016的當地天數,他們會將時間轉換爲UTC,這也將在4/24/2016中解決。 UTC日存儲桶中的數據包含當地日期4/23/2016 7小時的數據,並且錯過當地日期的最後7小時4/24/2016。這似乎是一個問題,因爲查詢不會返回正確的總和。它返回UTC時間的總和。

我是否錯過了這個例子?或者在時間間隔>數小時內存儲數據桶是一個壞主意?

回答

1

您的一天,每月和每年桶中都有一個時區(本例中爲UTC0)。如果您想報告不同時間段的日/月/年總計,那最終是不同的小時數集合,您需要使用該時區的一天的開始和結束的概念來計算和存儲它們。

+0

這就是我的想法。這是否有一個共同的設計模式? –

+1

不是真的,除了要注意的是,如果要容納時區,則TZ偏移將成爲正式的查詢參數。無論您是選擇預先計算特定時區的日/月/年聚合還是隨時爲任何時區執行聚合,都將取決於您的資源和要求。 – welch

0

由於此示例中用戶的角度是PST並且數據以UTC存儲,因此您必須有一個標誌或指示表明希望看到整天的聚合值。如果我是PST,無論4月24日是什麼時間,如果我選擇返回一整天的彙總,我想查詢UTC從3/24上午7:00到3月25日7:00下午。如果這是您的意圖,則基於用戶選擇總結一天數據的事實,它將成爲修改的開始和結束日期。我沒有看到您的設計在幾分鐘,幾小時,幾天,幾個月內存儲數據的問題。

這實際上是您定義一天數據的問題。是指定時間前24小時還是當天24小時,這是我在上面討論過的。

+0

我的意圖是一天24小時。但是如果我存儲日桶並查看日桶,如果日桶只有當天的總數據,我將無法查詢從3/24上午7:00到下午3/24下午7:00,因爲這需要下降到小時級別。 –