PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Interroger le fuseau horaire - le serveur de base de données et la machine cliente ont des fuseaux horaires différents

Vous toujours obtenir les same data in browser client as the db original value . Il existe de nombreuses façons différentes d'afficher le même point dans le temps (à différents fuseaux horaires). Deux exemples (représentations textuelles d'un timestamptz valeur):

'2012-03-05 20:00:00+03'
'2012-03-05 18:00:00+01'

Même valeur .

En ce qui concerne Postgres, le paramètre de fuseau horaire du serveur n'a aucune importance pour cela. La seule chose pertinente est le cadre de la session. Et la seule chose qui change est l'affichage de la valeur. C'est toujours le même moment.

Il vous suffit donc de définir le fuseau horaire dans votre session pour obtenir la représentation textuelle correspondante :

Une autre option serait le AT TIME ZONE construction. Pour obtenir un timestamp en tant que local timestamp without time zone :

SELECT my_timestamptz_column AT TIME ZONE '-8';

Lorsqu'il s'agit d'une table table that contains a column of timezone type , cela pourrait être la meilleure approche, car le fuseau horaire peut changer pour chaque ligne.

Encore une fois, tout cela est dans la réponse de référence :