MySQL CONVERT_TZ() Isu
Apabila bekerja dengan zon waktu dalam pangkalan data, terutamanya dengan waktu penjimatan siang (DST), adalah penting untuk memastikan penukaran yang tepat. Berikut ialah beberapa isu dan penyelesaiannya berkenaan fungsi MySQL CONVERT_TZ():
S1. Ketepatan Nama Zon Masa
Ya, anda betul. Menentukan nama zon waktu seperti "AS/Timur" harus mengambil kira masa penjimatan siang secara automatik. CONVERT_TZ('00:00:00', 'UTC', 'AS/EASTERN') sepatutnya menghasilkan keputusan yang berbeza untuk 1 Januari dan 1 Julai disebabkan DST.
S2. Mengemas kini Jadual Zon Masa
MySQL menggunakan set jadual zon waktu untuk menentukan offset semasa untuk pelbagai zon waktu. Jika anda tidak menggunakan versi terkini jadual ini, fungsi CONVERT_TZ() mungkin tidak berfungsi dengan betul. Anda boleh menyemak sama ada jadual zon waktu dikemas kini dengan menjalankan pertanyaan berikut:
SELECT VERSION() FROM mysql.time_zone_name;
Jika output menunjukkan nombor versi yang lebih rendah daripada '2018j', anda harus mengemas kini jadual dengan melaksanakan arahan berikut:
mysql_tzinfo_to_sql /usr/share/zoneinfo/ | mysql -u root -p mysql
S3. "NULL" Hasil daripada CONVERT_TZ()
Hasil "NULL" yang anda temui boleh menunjukkan bahawa jadual zon waktu tidak dipasang atau dimulakan dengan betul. Untuk mengesahkan ini, jalankan pertanyaan berikut:
SELECT COUNT(*) FROM mysql.time_zone;
Jika hasilnya 0, ini bermakna jadual zon waktu kosong. Dalam kes ini, anda boleh memasangnya menggunakan arahan yang dinyatakan di atas.
Penyelesaian Alternatif
Walaupun CONVERT_TZ() biasanya merupakan penyelesaian yang boleh dipercayai untuk penukaran zon waktu, terdapat pendekatan alternatif yang menghapuskan keperluan untuk jadual zon waktu. Anda boleh menyimpan zon waktu pengguna mengimbangi daripada UTC dalam jam dan menggunakan pertanyaan berikut untuk menukar masa UTC kepada waktu tempatan pengguna:
SELECT UTC_TIMESTAMP() + INTERVAL user_timezone_offset_in_hours HOUR;
Kaedah ini tidak memerlukan jadual zon waktu dan agak mudah untuk dilaksanakan .
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyelesaikan Masalah Fungsi CONVERT_TZ() MySQL untuk Penukaran Zon Masa yang Tepat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!