Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menukar Cap Waktu UNIX kepada DateTime dalam SQL Server dan Mengendalikan Masalah Tahun 2038?

Bagaimana untuk Menukar Cap Waktu UNIX kepada DateTime dalam SQL Server dan Mengendalikan Masalah Tahun 2038?

Mary-Kate Olsen
Lepaskan: 2025-01-17 16:27:10
asal
496 orang telah melayarinya

How to Convert UNIX Timestamps to DateTime in SQL Server and Handle the Year 2038 Problem?

Menukar Cap Masa UNIX kepada Tarikh dalam Pelayan SQL

Ramai pengguna SQL Server perlu menukar cap waktu UNIX (disimpan sebagai bigint) kepada nilai DateTime. Ini penting apabila bekerja dengan data daripada sistem yang menggunakan cap masa UNIX untuk mewakili tarikh dan masa.

Penyelesaian Mudah:

Pendekatan biasa melibatkan penggunaan fungsi DATEADD:

<code class="language-sql">SELECT DATEADD(second, [unixtime], '19700101')
FROM [Table]</code>
Salin selepas log masuk

Di sini, '19700101' mewakili zaman—1 Januari 1970, 00:00:00 UTC, titik permulaan untuk cap masa UNIX.

Masalah Tahun 2038 dan Penyelesaiannya:

Masa zaman mengira saat sejak zaman itu. Fungsi DATEADD SQL Server, bagaimanapun, mempunyai had integer untuk bilangan saat. Menambah lebih daripada 2,147,483,647 saat menghasilkan ralat limpahan aritmetik. Ini ialah "Masalah Tahun 2038."

Untuk mengendalikan cap masa melebihi 2038, penyelesaiannya ialah membahagikan penambahan kepada dua operasi DATEADD:

<code class="language-sql">DECLARE @t BIGINT = 4147483645;
DECLARE @oneyear INT = 31622400; -- Approximate seconds in a year

SELECT DATEADD(second, @t % @oneyear, DATEADD(year, @t / @oneyear, '19700101'));</code>
Salin selepas log masuk

Kaedah ini mula-mula mengira bilangan tahun dan baki saat, kemudian menambahkannya secara berurutan, dengan berkesan mengatasi had integer dan membenarkan penukaran cap masa jauh melebihi tahun 2038.

Atas ialah kandungan terperinci Bagaimana untuk Menukar Cap Waktu UNIX kepada DateTime dalam SQL Server dan Mengendalikan Masalah Tahun 2038?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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