Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengendalikan Zon Waktu Dengan Betul Apabila Menyambungkan Java ke Pangkalan Data MySQL?
MySQL beroperasi dengan zon waktu "GMT 8", manakala Tomcat menggunakan "GMT." Apabila menyimpan masa tarikh ke pangkalan data, nilai mungkin kelihatan betul, tetapi apabila diambil semula, nilai "GMT" muncul. Selain itu, nilai yang diambil daripada pangkalan data ditukar kepada "GMT", mencadangkan pangkalan data menganggapnya "GMT 8."
Parameter useTimezone ialah penyelesaian yang sudah lapuk. Untuk penyelesaian moden, tetapkan useLegacyDatetimeCode=false dan tingkatkan kepada penyambung mysql JDBC terkini. Contoh URL sambungan:
jdbc:mysql://localhost/mydb?useLegacyDatetimeCode=false
Jika useLegacyDatetimeCode ditetapkan kepada palsu, kaedah newSetTimestampInternal() akan digunakan. Jika Kalendar yang disediakan adalah batal, objek tarikh diformatkan dalam zon waktu pangkalan data:
this.tsdf = new SimpleDateFormat("''yyyy-MM-dd HH:mm:ss", Locale.US); this.tsdf.setTimeZone(this.connection.getServerTimezoneTZ()); timestampString = this.tsdf.format(x);
Untuk mendapatkan semula tarikh, gunakan getTimestamp(int) tanpa Kalendar. Sekali lagi, zon waktu pangkalan data akan digunakan untuk membina tarikh.
Zon waktu pelayan web kini tidak relevan untuk pemformatan. Jika useLegacyDatetimecode kekal benar, zon waktu pelayan web digunakan, yang membawa kepada kekeliruan.
MySQL mungkin mengadu tentang kekaburan zon waktu pelayan apabila ditetapkan kepada EST, contohnya. Untuk menyelesaikan masalah ini, nyatakan zon waktu EST yang tepat dalam URL sambungan:
jdbc:mysql://localhost/mydb?useLegacyDatetimeCode=false&serverTimezone=America/New_York
Ini hanya perlu jika MySQL menimbulkan isu kekaburan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengendalikan Zon Waktu Dengan Betul Apabila Menyambungkan Java ke Pangkalan Data MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!