J'utilise le dernier cadre Zend pour communiquer avec une base de données PostgreSQL. Certaines de mes tables DB ont un champ 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. P> () code> ajoutant l'horodatage actuel. Cependant, le fuseau horaire de la connexion DB peut être différent pour différentes demandes. p>
3 Réponses :
dans SQL ,
SELECT * FROM pg_timezone_names;
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' code>
@ 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.
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;
Désolé pour la question naïve mais qu'est-ce que pour code>?
@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 code> ne sont pas pris en charge ( postgreSQL.org/docs/9.3/event-trigger-matrix.html ). Cela aurait été utile, peut-être à l'avenir.
Juste un coup long, mais si vous définissez le fuseau horaire du rôle que vous utilisez?
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') code>. Voici un Réponse associée à ce sujet .