2012-10-10 5 views
0

Je suis nouveau dans le développement de bases de données et je travaille actuellement sur MySQL. J'ai une colonne qui contient tous les fuseaux horaires pour les Etats-Unis. Je veux être en mesure d'obtenir l'heure actuelle (seulement l'heure, pas de date) en ce moment pour chaque fuseau horaire de chaque rangée.MySQL fuseau horaire

Les données TimeZone ressemble: +05: 00, -03: 00 etc etc etc

Voilà comment je l'ai tenté. J'ai 2 tables, un pays, une ville. TimeZone se trouve dans la table "city". J'ai essayé d'utiliser la fonction sys date() mais elle renvoie la date complète et l'heure actuelle sur mon système, pas en fonction du fuseau horaire. Quelqu'un peut m'aider? Merci beaucoup

select TimeZone, Country, sysdate() as "Current Time" 
from city, country 
where Country='USA' and city.CountryId= country.CountryId; 
+0

Utilisez-vous les définitions de fuseau horaire intégrées à mysql? http://dev.mysql.com/doc/refman/5.0/en/mysql-tzinfo-to-sql.html –

+0

+05: 00, -03: 00 est un mauvais moyen de stocker les fuseaux horaires. Lorsque l'heure d'été arrive, vous ne saurez pas quels fuseaux horaires doivent être ajustés. La bonne chose à faire est d'utiliser les noms de fuseau horaire du magasin tels que "America/New_York", "America/Chicago", etc. –

+0

@NathanVillaescusa Merci pour la réponse. Je n'ai pas conçu/créé la table. Mon travail consiste simplement à l'interroger, savez-vous quelle fonction m'aiderait ou comment s'y prendre? Merci encore –

Répondre

1

Vous devriez pouvoir utiliser la fonction convert_tz:

SELECT CONVERT_TZ(NOW(),'-07:00', city.TimeZone) AS Time, city.Name 
    FROM city, country 
    WHERE country.Name='USA' and city.CountryId= country.CountryId; 

En supposant que votre serveur est en -07: 00 fuseau horaire.

+0

Merci beaucoup. Je l'ai fait: sélectionnez Fuseau horaire, Pays, Ville, convert_tz (maintenant(), - 07: 00, Fuseau horaire) de la ville, pays où Pays = 'USA' et city.CountryId = country.CountryId; mais il me dit qu'il y a une erreur avec ma syntaxe .. ai-je fait le -07: 00 correct? –

+0

Ajouter des guillemets autour de -07: 00 comme '-07: 00'. –

+0

Merci beaucoup. Travaillé comme un charme! Va accepter –