Soalan 1: Pertimbangan Waktu Penjimatan Siang
Ya, anda betul. Dengan menyatakan nama zon waktu (cth., "AS/Timur"), CONVERT_TZ() mengambil kira masa penjimatan siang. Memanggil CONVERT_TZ('00:00:00', 'UTC', 'AS/EASTERN') mengembalikan '19:00:00' pada bulan Januari, menyedari bahawa Waktu Timur berada di belakang UTC sebanyak 5 jam. Semasa waktu penjimatan siang, keputusannya ialah '20:00:00' apabila Waktu Timur bergerak sejam lebih awal.
Soalan 2: Kemas Kini Jadual Zon Waktu
Jika anda bergantung semata-mata pada nama zon waktu, anda tidak perlu sentiasa mengemas kini jadual zon waktu untuk memastikan offset dikemas kini. CONVERT_TZ() mempertimbangkan tetapan zon waktu semasa dan peraturan masa penjimatan siang.
Soalan 3: Menyelesaikan Masalah NULL Returns
The NULL return dalam sampel pertanyaan anda (CONVERT_TZ(' 2004-01-01 12:00:00','GMT','MET')) sememangnya boleh disebabkan oleh kehilangan jadual zon waktu. Untuk mengesahkan ini, jalankan pertanyaan berikut:
SELECT CONVERT_TZ(now(),'US/Eastern','US/Central');
Jika ini juga mengembalikan NULL, ini menunjukkan bahawa jadual zon waktu belum disediakan dengan betul.
Petua Tambahan
Daripada menambah atau menolak masa secara langsung, anda boleh menggunakan kata kunci INTERVAL dalam MySQL untuk mengendalikan pengiraan masa. Sebagai contoh, anda boleh menolak satu hari dan menambah empat jam dengan menggunakan:
now() - interval 1 day + interval 4 hour
Atas ialah kandungan terperinci Bagaimanakah Fungsi CONVERT_TZ() MySQL Mengendalikan Zon Masa dan Waktu Penjimatan Siang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!