Rumah >pangkalan data >tutorial mysql >Bagaimanakah MySQL Boleh Mengendalikan Masa Samar-samar Semasa Peralihan Masa Penjimatan Siang?
Mengendalikan Masa Samar-samar dengan Waktu Penjimatan Siang dalam MySQL
Apabila waktu penjimatan siang (DST) berlaku, terdapat jam yang samar-samar di mana ia sukar untuk menentukan rujukan masa yang dimaksudkan. Contohnya, di zon waktu Amerika/New York, 1:30 pagi boleh berlaku dua kali semasa tempoh peralihan musim luruh.
Masalah:
Medan DATETIME dan TIMESTAMP MySQL menampilkan unik cabaran dalam menangani masa yang samar-samar ini. Medan DATETIME menyimpan tarikh dan masa sebagaimana adanya, tanpa mengambil kira zon waktu atau penukaran DST. Medan TIMESTAMP menukar cap masa input kepada UTC dan sebaliknya.
Penyelesaian:
1. Gunakan Medan DATETIME:
Tukar cap masa kepada UTC sebelum menyimpannya dalam medan DATETIME. Ini memastikan anda mempunyai kawalan ke atas masa UTC yang tepat untuk menyimpan.
2. Tafsiran Data Diperoleh:
Terjemahkan cap masa yang diambil daripada medan DATETIME sebagai cap masa UTC di luar MySQL. Ini menghalang kekaburan yang diperkenalkan oleh fungsi tarikh/masa MySQL.
3. Elakkan Medan TIMESTAMP:
Elakkan menggunakan medan TIMESTAMP kerana ia boleh membawa kepada penukaran yang tidak konsisten antara waktu tempatan dan UTC apabila DST terlibat.
Pelaksanaan:
Mendapatkan semula Data:
// Example using PHP's DateTime class $timestamp = strtotime($db_timestamp . ' UTC');
Menyimpan Data:
// Example using PHP's DateTime class $UTCDateTime = new DateTime('2009-11-01 1:30:00 EST'); $db_timestamp = $UTCDateTime->format('Y-m-d H:i:s');
Pertimbangan:
Atas ialah kandungan terperinci Bagaimanakah MySQL Boleh Mengendalikan Masa Samar-samar Semasa Peralihan Masa Penjimatan Siang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!