BASE DE CONNAISSANCES

Les fonctions NOW() et TODAY() retournent des dates/heures dans un fuseau horaire inattendu


Date de publication : 04 Mar 2013
Date de dernière modification : 23 Oct 2023

Problème

À l'aide de la fonction NOW() ou TODAY() dans un champ calculé, Tableau Desktop retourne l'heure dans un autre fuseau horaire, ou, si vous utilisez un filtre Date relative, la date d'ancrage sera dans un fuseau horaire différent.

Environnement

  • Tableau Desktop
  • PostgreSQL
  • Référentiel Tableau Server (base de données PostgreSQL)
  • Amazon Redshift
  • Connexion en direct à une source de données hébergée sur un ordinateur qui se trouve dans un autre fuseau horaire

Résolution

Option 1 :

Utilisez un extrait. Pour plus d'informations, consultez Extraire vos données.


Option 2 :

Utilisez un calcul avec la fonction DATEADD() afin de tenir compte du décalage horaire.
Exemple 1 :
  • Pour convertir une heure UTC en heure PST (Pacific Standard Time), la formule est la suivante : NOW()
  • Pourrait se présenter ainsi : DATEADD('hour', -8, NOW())

Remarque : pendant l'heure d'été, le décalage horaire entre UTC et PDT sera de -7 heures.

Exemple 2 :

Pour convertir une heure UTC en heure PST (Pacific Standard Time) pour un filtre de date relative :

  1. Supprimez le filtre de date de l'étagère Filtres
  2. Sélectionnez Analyse > Créer un champ calculé
  3. Dans la boîte de dialogue Champ calculé qui s'ouvre, procédez comme suit, puis cliquez sur OK :
    • Nommez le champ calculé. Dans cet exemple, le champ calculé est appelé « Filtre 3 derniers jours »
    • Dans le champ de formule, créez un calcul du type suivant :

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

  4. Faites glisser [Filtre 3 derniers jours] vers l'étagère Filtre.
  5. Dans la boîte de dialogue, cochez True puis cliquez sur OK.

 

Cause

Lorsque vous vous connectez en direct, Tableau Desktop interroge la source de données pour NOW() ou TODAY(). Si la source de données est hébergée sur un ordinateur qui se trouve dans un autre fuseau horaire, il se peut que la source de données retourne l'heure de ce fuseau horaire.

Les connexions en direct à Redshift et PostgreSQL sont conçues pour renvoyer l'heure UTC en raison d'incohérences dans la manière dont ces sources de données traitent les décalages de date/heure et de fuseau horaire.

 
Cet article vous a-t-il permis de résoudre le problème ?