>데이터 베이스 >MySQL 튜토리얼 >SQL Server에서 Bigint UNIX 타임스탬프를 DateTime으로 변환하는 방법은 무엇입니까?

SQL Server에서 Bigint UNIX 타임스탬프를 DateTime으로 변환하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-17 16:36:14905검색

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

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.