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
Lepaskan: 2024-12-25 20:29:09
asal
797 orang telah melayarinya

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');
Salin selepas log masuk

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');
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan