Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menukar Lajur Datetime UTC kepada Waktu Tempatan dalam SQL?

Bagaimana untuk Menukar Lajur Datetime UTC kepada Waktu Tempatan dalam SQL?

Patricia Arquette
Patricia Arquetteasal
2025-01-17 04:22:09301semak imbas

How to Convert a UTC Datetime Column to Local Time in SQL?

Menukar Waktu Tarikh UTC kepada Waktu Setempat dengan Cekap dalam Pertanyaan SQL

Banyak sistem pangkalan data menyimpan cap masa dalam UTC untuk konsistensi. Panduan ini menunjukkan cara untuk menukar lajur waktu tarikh UTC ini kepada waktu tempatan terus dalam pertanyaan SQL anda, menghapuskan keperluan untuk kod luaran.

SQL Server 2008 dan Kemudian:

Pendekatan ini memanfaatkan fungsi SWITCHOFFSET untuk penukaran yang tepat:

<code class="language-sql">SELECT CONVERT(datetime, 
               SWITCHOFFSET(CONVERT(datetimeoffset, 
                                    MyTable.UtcColumn), 
                            DATENAME(TzOffset, SYSDATETIMEOFFSET()))) 
       AS ColumnInLocalTime
FROM MyTable</code>

Kaedah Alternatif (Verbose):

Kaedah yang lebih mudah, walaupun kurang elegan, menggunakan DATEADD dan DATEDIFF:

<code class="language-sql">SELECT DATEADD(mi, DATEDIFF(mi, GETUTCDATE(), GETDATE()), MyTable.UtcColumn) 
       AS ColumnInLocalTime
FROM MyTable</code>

Pertimbangan Utama:

  • Elakkan Penolakan Tarikh: Penolakan tarikh terus (-) boleh membuahkan hasil yang tidak dapat diramalkan kerana keadaan perlumbaan yang berpotensi. Kaedah di atas mengelakkan masalah ini.
  • Waktu Penjimatan Siang (DST): Penyelesaian yang disediakan tidak mengendalikan pelarasan DST secara automatik. Untuk pengendalian DST yang tepat, rujuk sumber yang menangani pengiraan DST dalam SQL Server (cth., perbincangan Stack Overflow tentang mencipta fungsi mula/akhir DST).

Maklumat ini memberi kuasa kepada anda untuk melakukan penukaran UTC-ke-tempatan yang cekap dan tepat secara terus dalam pertanyaan SQL anda.

Atas ialah kandungan terperinci Bagaimana untuk Menukar Lajur Datetime UTC kepada Waktu Tempatan dalam SQL?. 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