J'ai installé PostgreSQL 9
et l'heure affichée est 1 heure de retard sur l'heure du serveur.
Exécution de Select NOW()
spectacles:2011-07-12 11:51:50.453842+00
La date du serveur indique: Tue Jul 12 12:51:40 BST 2011
Il a 1 heure de retard mais le fuseau horaire indiqué dans phppgadmin
est:TimeZone Etc/GMT0
J'ai essayé d'entrer dans le postgresql.conf
décor et
fuseau horaire = GMT
puis lancer un redémarrage mais pas de changement.
Des idées que je pensais qu'il aurait juste utilisé le fuseau horaire du serveur mais évidemment pas?!
SOLUTION!: Je l'ai fait GMT
avant et il y avait une heure de retard. après avoir cherché, il s'est avéré que je devais le régler Europe/London
. Cela prend en compte le +1 heure de l'heure d'été britannique, pas GMT!
la source
SET TIME ZONE 'UTC';
. Voir la doc .Choisissez un
timezone
parmi:Et
set
comme ci-dessous l'exemple donné:Utilisez votre nom de base de données à la place de
postgres
dans l'instruction ci-dessus.la source
SELECT pg_reload_conf();
:)SELECT pg_reload_conf()
renvoyé true, maisnow()
et jeselect current_setting('TIMEZONE')
continue à renvoyer des valeurs pour «America / New_York». Est-ce parce que je ne suis pas superutilisateur?Pour effectuer le changement de fuseau horaire dans Postgres 9.1, vous devez:
1.- Recherchez dans votre dossier "timezones" dans /usr/share/postgresql/9.1/ le fichier approprié, dans mon cas serait "America.txt", recherchez l'emplacement le plus proche de votre zone et copiez le premières lettres dans la colonne de gauche.
Par exemple: si vous êtes à "New York" ou "Panama", ce serait "EST":
2.- Décommentez la ligne "fuseau horaire" dans votre
postgresql.conf
fichier et mettez votre fuseau horaire comme indiqué:3.- Redémarrez Postgres
la source
−05:00
année tandis que New York décale d'une heure avec l'heure d'été (DST). Un fuseau horaire est plus qu'un décalage; un fuseau horaire inclut l'ensemble passé, présent et futur de règles et d'anomalies telles que l'heure d'été. Alors, dites ce que vous voulez dire:America/Panama
,America/New_York
,Europe/London
,UTC
(ouZulu
).SELECT * FROM pg_timezone_names
ce qui est probablement plus sûr à faire, étant donné que les sites tiers ne seront pas nécessairement aussi à jour (ou obsolète) comme votre propre instance de base de données.postgresql
select pg_reload_conf()
.La réponse acceptée par Muhammad Usama est correcte.
Nom du paramètre de configuration
Cette réponse montre comment définir un paramètre de configuration spécifique à Postgres avec les éléments suivants:
… Où
timezone
n'est pas une commande SQL, c'est le nom du paramètre de configuration.Voir le doc pour cela .
Commande SQL standard
Vous pouvez également utiliser la commande SQL défini par la spécification SQL:
SET TIME ZONE
. Dans cette syntaxe, une paire de motsTIME ZONE
remplace «timezone» (commande SQL réelle par rapport au nom du paramètre), et il n'y a pas de «TO».Cette commande et celle ci-dessus ont le même effet, pour définir la valeur pour la session en cours uniquement. Pour rendre le changement permanent, consultez cette réponse de votre frère .
Voir le doc pour cela .
Nom du fuseau horaire
Vous pouvez spécifier un nom de fuseau horaire approprié . La plupart d'entre eux sont continent / région.
…ou…
Évitez les abréviations à 3 ou 4 lettres telles que
EST
ouIST
car elles ne sont ni standardisées ni uniques. Voir Wikipedia pour la liste des noms de fuseaux horaires .Obtenir la zone actuelle
Pour afficher le fuseau horaire actuel d'une session, essayez l'une des instructions suivantes. Techniquement, nous appelons la
SHOW
commande pour afficher un paramètre d'exécution.…ou…
la source
SHOW
pièceSELECT current_setting('TIMEZONE')
En plus des réponses précédentes, si vous utilisez l'outil pgAdmin III, vous pouvez définir le fuseau horaire comme suit:
la source
Notez que de nombreux clients tiers ont leurs propres paramètres de fuseau horaire qui chevauchent tous les paramètres de serveur et / ou de session Postgres.
Par exemple, si vous utilisez 'IntelliJ IDEA 2017.3' (ou DataGrips), vous devez définir le fuseau horaire comme suit:
'Propriétés de la source de base de données' -> onglet 'Avancé' -> 'Options VM': -Duser.timezone = UTC + 06: 00
sinon, vous verrez «UTC» malgré tout ce que vous avez défini ailleurs.
la source
Peut-être pas lié à la question, mais j'avais besoin d'utiliser CST, de définir le fuseau horaire du système sur le tz souhaité (Amérique / ...), puis dans la conf postgresql, définir la valeur du fuseau horaire sur `` heure locale '' et cela a fonctionné comme un charme , current_time imprimant le bon moment (PostgreSQL 9.5 sur Ubuntu 16)
la source