Maison >base de données >tutoriel mysql >Comment puis-je gérer correctement les fuseaux horaires lors de la connexion de Java à une base de données MySQL ?
MySQL fonctionne avec le fuseau horaire « GMT 8 », tandis que Tomcat utilise « GMT ». Lors de l'enregistrement de datetime dans la base de données, les valeurs peuvent sembler correctes, mais une fois récupérées, les valeurs "GMT" apparaissent. De plus, les valeurs extraites de la base de données sont converties en « GMT », ce qui suggère que la base de données les considère comme « GMT 8 ».
Le paramètre useTimezone est une solution de contournement obsolète. Pour une solution moderne, définissez useLegacyDatetimeCode=false et effectuez la mise à niveau vers le dernier connecteur MySQL JDBC. Un exemple d'URL de connexion :
jdbc:mysql://localhost/mydb?useLegacyDatetimeCode=false
Si useLegacyDatetimeCode est défini sur false, la méthode newSetTimestampInternal() est invoquée. Si le calendrier fourni est nul, l'objet date est formaté dans le fuseau horaire de la base de données :
this.tsdf = new SimpleDateFormat("''yyyy-MM-dd HH:mm:ss", Locale.US); this.tsdf.setTimeZone(this.connection.getServerTimezoneTZ()); timestampString = this.tsdf.format(x);
Pour récupérer la date, utilisez getTimestamp(int) sans le calendrier. Encore une fois, le fuseau horaire de la base de données sera utilisé pour construire la date.
Le fuseau horaire du serveur Web n'est désormais plus pertinent pour le formatage. Si useLegacyDatetimecode reste vrai, le fuseau horaire du serveur Web est utilisé, ce qui entraîne une confusion.
MySQL peut se plaindre de l'ambiguïté du fuseau horaire du serveur lorsqu'il est défini sur EST, par exemple. Pour résoudre ce problème, spécifiez le fuseau horaire EST exact dans l'URL de connexion :
jdbc:mysql://localhost/mydb?useLegacyDatetimeCode=false&serverTimezone=America/New_York
Ceci n'est nécessaire que si MySQL soulève le problème d'ambiguïté.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!