7
votes

Définir le fuseau horaire de l'instance PostgreSQL

J'utilise le dernier cadre Zend pour communiquer avec une base de données PostgreSQL. Certaines de mes tables DB ont un champ () ajoutant l'horodatage actuel. Cependant, le fuseau horaire de la connexion DB peut être différent pour différentes demandes.

est-il possible de définir le fuseau horaire d'une base de données PostgreSQL à une base de connexion? Je sais que vous pouvez passer des options de pilote à l'instance de zend_db, donc je pense qu'il y a le tour.


1 commentaires

Il peut être préférable d'éviter simplement la nécessité de définir un fuseau horaire par défaut. Assurez-vous plutôt de spécifier un fuseau horaire chaque fois que vous travaillez avec le temps. E.g.: Utilisation de @Date ('c') . Voici un Réponse associée à ce sujet .


3 Réponses :


6
votes

dans SQL ,

SELECT * 
FROM pg_timezone_names;


4 commentaires

Cela fonctionne, mais y a-t-il un moyen de le faire automatiquement? Comme, existe-t-il un équivalent PG de PDO :: mysql_attr_init_command => "Set ..."


Je ne suis pas sûr de comprendre comment utiliser pdo :: mysql_attr_init_command ... constitue "automatique". Vous n'avez pas à envoyer cela au serveur chaque fois que vous vous connectez? Même avec cette déclaration SQL. (Sauf si vous partagez le fuseau horaire du serveur.) Mais avec PostgreSQL, vous pouvez également utiliser la variable d'environnement PGTZ. Voir la documentation liée ci-dessus.


Dans le contexte de votre réponse, des moyens automatiques définis une fois, puis appliqués à toutes les sessions sans avoir besoin d'une utilisation explicite de la commande définir le fuseau horaire sur 'x'


@ Christian-G La réponse de Erwin Brandstter ci-dessus et actuellement votée plus haut est probablement un type de "automatique" que vous recherchez.



7
votes

si strong> vos connexions se produisent avec des rôles de base de données distincts (logines) pouvant être liés à un fuseau horaire fort>, puis postgreSQL propose une solution simple:

SELECT now() AT TIME ZONE foo;


3 commentaires

Désolé pour la question naïve mais qu'est-ce que pour ?


@Ciastopiekarz: J'ai ajouté d'autres explications.


À Postgres, il existe des déclencheurs d'événements, mais à compter d'aujourd'hui Créer un utilisateur ne sont pas pris en charge ( postgreSQL.org/docs/9.3/event-trigger-matrix.html ). Cela aurait été utile, peut-être à l'avenir.



1
votes

Juste un coup long, mais si vous définissez le fuseau horaire du rôle que vous utilisez? XXX


0 commentaires