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!