2010-09-22 36 views
0

我有一個winform客戶端和wcf服務,它們共同顯示歷史數據。使用utc時間戳存儲在數據庫中的數據。如果兩個不同時區的客戶想要根據當地時間查看最近一天的數據,他們是否有可能查看不同的數據集?差異化當地時間的數據價值

回答

2

這取決於。

  1. 如果「一天的價值」是指「過去24小時」,那麼他們都將看到相同的數據。
  2. 如果「一天的價值」意味着在用戶的當地時區「當前日期-1」的00:00-23:59「,那麼他們可能會看到不同的數據。

例子:

 event 1  event 2  +---- service request 
     |   |   v 

|---------------|---------------|- days in Central Europe 

--------|-----------------|------- days in the US (Pacific time) 

---------------|---------------|-- UTC day boundaries 

在案例1中,你只可以追溯至24小時內從服務請求的時間。很容易看到,美國和歐洲的客戶都會得到相同的事件清單。

在情況2中,更加困難:就美國時間而言,事件1和事件2發生在同一天。就歐洲而言,這兩件事發生在不同的日子,所以美國客戶和歐洲客戶的結果會不同。

+0

嗨Heinzi,你能解釋一下這兩種情況有什麼區別嗎? – EndlessSpace 2010-09-22 20:41:56

+0

@ user428468:編輯我的答案。 – Heinzi 2010-09-22 21:13:14

+0

嗯這使得它更清晰。所以從你的解釋看來,我想要實施第二種情況,這會使你很難說出同樣的理由。在這種情況下,我需要通知用戶,儘管他/她可能在當地時間查找1天的數據,但數據庫中還有一些更新的數據可用。這是一個好的解決方案嗎? – EndlessSpace 2010-09-23 13:34:53

1

沒有進一步的細節,答案是兩個。

  1. 如果每天在本地時區的定義,那麼更改爲UTC格式要求的分貝作出前,他們都會有不同的數據集。

  2. 查詢是否喜歡

    select * from dbTable where TimeStamp >= '9/22/2010' and TimeStamp < '9/23/2010' 
    

    select * from dbTable where TimeStamp >= GetDate() - '24:00:00' and TimeStamp < GetDate() 
    

    財產以後那麼他們將返回同一組數據的兩個時區。

0

這當然是可能的 - 這是全球化/本地化的共同問題之一。 重要的是在進行查詢之前將所有請求轉換爲UTC時間。如果查詢都是基於UTC的,那麼返回到本地機器的數據應該匹配,因爲UTC時間將匹配。