Rumah >pangkalan data >tutorial mysql >Bagaimanakah MySQL Boleh Mengendalikan Masa Samar-samar Semasa Peralihan Masa Penjimatan Siang?

Bagaimanakah MySQL Boleh Mengendalikan Masa Samar-samar Semasa Peralihan Masa Penjimatan Siang?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-25 20:29:09709semak imbas

How Can MySQL Handle Ambiguous Datetimes During Daylight Saving Time Transitions?

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:

  • MySQL's fungsi tarikh/masa tidak boleh mengendalikan sempadan DST dengan pasti apabila menyimpan data dalam DST zon waktu.
  • Nyatakan offset dalam medan DATETIME diabaikan oleh MySQL.

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!

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