Tout d'abord, vous devez utiliser timestamptz
au lieu de timestamp
chaque fois que vous travaillez avec plusieurs fuseaux horaires. Éviterait complètement le problème.
Détails :
Vous pouvez utilisez le AT TIME ZONE
construire comme @NuLo suggère
, il peut fonctionne même, mais pas exactement comme décrit.
AT TIME ZONE
convertit le type timestamp
(timestamp without time zone
) à timestamptz
(timestamp with time zone
) et vice versa. La représentation textuelle d'un timestamptz
la valeur dépend du paramètre actuel du fuseau horaire de la session dans laquelle vous exécutez la commande. Ces deux timestamptz
valeurs sont identiques à 100 % (indiquent le même point dans le temps) :
'2015-09-02 15:55:00+02'::timestamptz
'2015-09-02 14:55:00+01'::timestamptz
Mais la représentation textuelle n'est pas . L'affichage correspond à différents fuseaux horaires. Si vous prenez cette chaîne littérale et l'alimentez avec un timestamp
type, la partie fuseau horaire est juste ignorée et vous vous retrouvez avec différent valeurs. Par conséquent, si vous exécutez votre COPY
déclaration dans une session avec le même paramètre de fuseau horaire que votre timestamp
d'origine les valeurs sont pour, l'opération suggérée se produit travailler.
La manière propre, cependant, est de produire un timestamp
correct valeurs pour commencer en appliquant AT TIME ZONE
deux fois :
SELECT event AT TIME ZONE 'my_target_tz' AT TIME ZONE 'my_source_tz', ...
FROM logtable
ORDER BY event desc;
'my_target_tz'
est "votre propre fuseau horaire" et 'my_source_tz'
le fuseau horaire du serveur cloud dans l'exemple. Pour vous assurer que l'heure d'été est respectée, utilisez des noms de fuseau horaire , pas les abréviations de fuseau horaire. La documentation :
Connexe :
- Prise en compte de l'heure d'été dans Postgres, lors de la sélection d'éléments planifiés
- Les noms de fuseaux horaires avec des propriétés identiques donnent des résultats différents lorsqu'ils sont appliqués à l'horodatage
Ou, bien mieux encore, utilisez timestamptz
partout et cela fonctionne correctement automatiquement.