知識庫

NOW() 和 TODAY() 函式返回非預期時區的日期時間


發佈時間 : 04 Mar 2013
上次修改日期 : 23 Oct 2023

問題

如果在計算欄位中使用 NOW() 或 TODAY() 函數,Tableau Desktop 将以不同的時區返回時間,或者,在使用相對日期篩選條件時,基準日期将采用不同的時區。

環境

  • Tableau Desktop
  • PostgreSQL
  • Tableau Server 存储庫(PostgreSQL 資料庫)
  • Amazon Redshift
  • 承載於時區不同的電腦上的資料源的實時連接

解決方法

選項 1:

使用資料提取。有关詳細資訊,請參見提取資料


選項 2:

将計算與 DATEADD() 函數結合使用以考慮時區偏移。
示例 1:
  • 若要将 UTC 轉換為 PST(太平洋標準時間),公式為:NOW()
  • 可能會變為:DATEADD('hour', -8, NOW())

注意:在夏令時期間,UTC 和 PDT 之間的時差将為 -7 小時。

示例 2:

為相對日期篩選條件将 UTC 轉換為 PST(太平洋標準時間):

  1. 從「篩選條件」功能區中移除日期篩選條件
  2. 選擇「分析」>「創建計算欄位」
  3. 在打開的「計算欄位」對話框中,執行以下作業,然後按一下「確定」
    • 命名此計算欄位。在此示例中,計算欄位名為「Last 3 Days Filter」(最後 3 天篩選條件)
    • 在公式欄位中,創建一個類似於如下的計算:

      [Date Field] >= DATEADD('day', -3, DATEADD( 'hour', -8, TODAY() ) )

  4. 将「[Last 3 Days Filter]」(最後 3 天篩選條件)拖到「篩選條件」功能區。
  5. 在「篩選條件」對話框中,選中「True」並按一下「確定」

 

原因

進行實時連接時,Tableau Desktop 将针對 NOW() 或 TODAY() 查詢資料源。如果資料源承載於位於不同時區中的電腦上,則資料源可能會返回該時區中的時間。

Redshift 和 PostgreSQL 的實時連接旨在返回 UTC 時間,因為这些資料源處理日期時間和時區偏移的方式不一致。

 

其他資訊

為了表達您對在将來的產品版本中包括此增强功能的支援,請為以下社區理念投下您的一票:時區轉換支援

這篇文章是否解決了問題?