Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana Mengendalikan Masa Penjimatan Siang dengan Medan `DATETIME` MySQL?

Bagaimana Mengendalikan Masa Penjimatan Siang dengan Medan `DATETIME` MySQL?

Susan Sarandon
Susan Sarandonasal
2024-11-12 06:21:01617semak imbas

How to Handle Daylight Savings Time with MySQL `DATETIME` Fields?

Medan Masa Tarikh MySQL dan Masa Penjimatan Siang: Mengendalikan Jam "Tambahan"

Perbincangan ini menangani cabaran yang dihadapi apabila berurusan dengan medan waktu tarikh MySQL dalam konteks masa penjimatan siang (DST). Kekaburan yang timbul semasa tempoh peralihan boleh menyebabkan kekeliruan dan penyimpanan data yang salah.

Masalahnya

Semasa peralihan DST, satu jam "diperoleh" atau " hilang." Titik peralihan ini mencipta dua kejadian pada masa yang sama, seperti 01:30:00 berlaku sekali dengan offset -04:00 dan sekali lagi dengan offset -05:00. Kekaburan ini menjadikannya tidak jelas contoh 01:30:00 yang sedang dirujuk.

Penghadan Medan Tarikh dan Cap Masa

Bertentangan dengan andaian sebelumnya, medan DATETIME dan TIMESTAMP jenis berkelakuan berbeza dengan kehadiran DST. Walaupun medan TIMESTAMP menukar data kepada UTC sebelum penyimpanan, medan DATETIME menyimpan data secara langsung tanpa penukaran. Walau bagaimanapun, kedua-dua jenis medan tidak boleh menyimpan data dengan tepat dalam zon waktu yang terjejas oleh DST.

Penyelesaian

Untuk mengatasi had ini, adalah perlu untuk menyimpan data dalam bukan- Zon waktu DST, seperti UTC. Ini boleh dicapai dengan menukar data daripada zon waktu sistem kepada UTC sebelum menyimpannya ke medan DATETIME.

Pertimbangan Tambahan

  • Fungsi matematik tarikh/masa MySQL mungkin tidak berfungsi dengan pasti di sekitar sempadan DST jika data disimpan dalam DST zon waktu.
  • Semua pengiraan masa harus dilakukan di luar MySQL menggunakan bahasa pengaturcaraan yang serasi, seperti PHP atau Python.
  • Apabila mendapatkan data daripada pangkalan data, tafsirkannya sebagai UTC di luar MySQL kepada dapatkan cap masa Unix yang tepat.

Dengan melaksanakan strategi ini, adalah mungkin untuk mengendalikan data masa tarikh dengan tepat dalam MySQL walaupun dengan adanya masa penjimatan siang hari.

Atas ialah kandungan terperinci Bagaimana Mengendalikan Masa Penjimatan Siang dengan Medan `DATETIME` MySQL?. 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