2017-08-15 1 views
0

J'ai un objet DateTime dans la base de données mysql contenant par exemple ce datetime "2017-08-14 18:06:40" et le fuseau horaire par défaut est server/mysql USA donc quand j'insérer un datetime il va dans le fuseau horaire des États-Unis.datetime MySQL avec différents fuseaux horaires

Mon problème est quand un utilisateur de l'Europe, par exemple, sélectionne cette date, ce sera différent en raison de la différence de synchronisation n'est pas le cas?

Comment résoudre ce problème. Je veux que l'utilisateur en Europe pour obtenir le datetime par rapport à leur fuseau horaire

J'ai trouvé de la recherche de cette

CONVERT_TZ(`comment_date`,@@global.time_zone,@@session.time_zone) AS comment_date, 

Je trouve que vous devez définir @@session.time_zone son non détecté automatiquement

Alors, comment nous résolvons ceci et quelles sont l'option et les techniques que les sites apps utilisent pour l'unification datetime entre les pays?

Répondre

0

Vous devez remplacer le type de données par timestamp au lieu de datetime si vous voulez qu'il représente un instant instantané quel que soit le fuseau horaire où il a été enregistré. Timestamp est toujours enregistré en tant que UTC tandis que datetime représente une date et une heure locales et ne contient aucune information de zone.

Voir cette question pour plus d'informations: Should I use field 'datetime' or 'timestamp'?

Voir aussi Mysql reference manual regarding datetime

+0

vous pouvez utiliser l'objet datetime juste ne pas insérer la valeur, définissez la valeur par défaut horodatage actuel ,, et définissez le mysql à UTC heure, puis analyser la date du côté client sur le fuseau horaire par défaut – iMyth