Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengendalikan Zon Waktu Dengan Betul Apabila Menyambungkan Java ke Pangkalan Data MySQL?

Bagaimanakah Saya Boleh Mengendalikan Zon Waktu Dengan Betul Apabila Menyambungkan Java ke Pangkalan Data MySQL?

Susan Sarandon
Susan Sarandonasal
2025-01-03 09:41:40263semak imbas

How Can I Correctly Handle Timezones When Connecting Java to a MySQL Database?

Menukar Zon Waktu MySQL dalam Sambungan Pangkalan Data Java

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."

Penyelesaian

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

Pengendalian Cap Masa

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.

Ketidakrelevanan Zon Waktu Pelayan Web

Zon waktu pelayan web kini tidak relevan untuk pemformatan. Jika useLegacyDatetimecode kekal benar, zon waktu pelayan web digunakan, yang membawa kepada kekeliruan.

Kekaburan Zon Waktu MySQL

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn