집 >데이터 베이스 >MySQL 튜토리얼 >SQL Server에서 Bigint UNIX 타임스탬프를 DateTime으로 변환하는 방법은 무엇입니까?
SQL Server: Bigint UNIX 타임스탬프를 DateTime으로 변환
이 가이드에서는 SQL Server 내에서 bigint UNIX 타임스탬프를 DateTime 값으로 효율적으로 변환하는 방법을 보여줍니다.
기본 방법은 DATEADD
함수를 사용하는 것입니다.
<code class="language-sql">SELECT DATEADD(SECOND, [unixtime], '19700101') FROM [Table]</code>
이 쿼리는 unixtime
열이 나타내는 초 수(Unix 시대 이후)를 기준 날짜인 1970년 1월 1일에 더하여 해당 DateTime을 산출합니다.
시대의 이해
날짜 '19700101'은 UNIX 타임스탬프의 시작점(1970년 1월 1일, 00:00:00 UTC)인 Unix 시대를 의미합니다.
2038년 문제 해결: 강력한 솔루션
표준 32비트 정수 UNIX 타임스탬프에는 제한이 있습니다. 2038년 1월 19일 03:14:07 UTC에 오버플로됩니다. 이 날짜 이후의 타임스탬프를 처리하려면 2단계 DATEADD
접근 방식을 사용할 수 있습니다.
<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>
이 방법은 먼저 연도 수와 남은 초를 계산한 다음 이를 epoch 날짜에 순차적으로 적용하여 오버플로 오류를 방지하고 2038년 이후의 타임스탬프에 대한 정확한 변환을 보장합니다.
위 내용은 SQL Server에서 Bigint UNIX 타임스탬프를 DateTime으로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!