Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menukar Cap Masa Bigint UNIX kepada DateTime dalam SQL Server?

Bagaimana untuk Menukar Cap Masa Bigint UNIX kepada DateTime dalam SQL Server?

Barbara Streisand
Barbara Streisandasal
2025-01-17 16:36:14900semak imbas

How to Convert Bigint UNIX Timestamps to DateTime in SQL Server?

SQL Server: Menukar Cap Masa UNIX Bigint kepada DateTime

Panduan ini menunjukkan cara untuk menukar cap masa UNIX bigint dengan cekap kepada nilai DateTime dalam SQL Server.

Kaedah utama melibatkan penggunaan fungsi DATEADD:

<code class="language-sql">SELECT DATEADD(SECOND, [unixtime], '19700101')
FROM [Table]</code>

Pertanyaan ini menambah bilangan saat yang diwakili oleh lajur unixtime (sejak zaman Unix) ke tarikh asas 1 Januari 1970, menghasilkan DateTime yang sepadan.

Memahami Zaman

Tarikh '19700101' menandakan zaman Unix—titik permulaan untuk cap masa UNIX (1 Januari 1970, 00:00:00 UTC).

Menangani Masalah Tahun 2038: Penyelesaian Teguh

Cap masa UNIX integer 32-bit standard mempunyai had: ia melimpah pada 19 Januari 2038, pada 03:14:07 UTC. Untuk mengendalikan cap masa melebihi tarikh ini, kami boleh menggunakan pendekatan DATEADD dua langkah:

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

SELECT (@t / @oneyear) -- Years to add
SELECT (@t % @oneyear) -- Remaining seconds

-- DateTime calculation for timestamp @t
SELECT DATEADD(SECOND, @t % @oneyear, DATEADD(YEAR, @t / @oneyear, '19700101'));</code>

Kaedah ini mula-mula mengira bilangan tahun dan baki saat, kemudian menggunakannya secara berurutan pada tarikh zaman, mencegah ralat limpahan dan memastikan penukaran yang tepat untuk cap masa selepas 2038.

Atas ialah kandungan terperinci Bagaimana untuk Menukar Cap Masa Bigint UNIX kepada DateTime dalam SQL Server?. 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