SQL Server/SQL Server Tip

Unix(Linux) timestamp(bigint) 형식을 datetime 으로 변경하기

SungWookKang 2016. 5. 5. 00:32
반응형

Unix(Linux) timestamp(bigint) 형식을 datetime 으로 변경하기

 

  • Version : SQL Server 2005, 2008, 2008R2, 2012, 2014, 2016

 

데이터를 운용하다 보면 시간(날짜)와 관련해서 다양한 데이터 형식 사용된다. 이번 포스트는 유닉스(리눅스)에서 전달받은 timestamp 형식을 SQL Server에서 datetime 형식으로 변경하는 방법에 대해서 알아본다.

 

Timestamp 값은 1700-01-01 00:00:00부터 시작하는 밀리세컨드(ms)값이다. dateadd() 함수를 사용하여 간단히 해결 할 수 있다. Dateadd() 함수는 int 형식을 지원하므로 ms -> s로 변경하기 위해 timestamp/1000으로 계산해야 한다.

declare @timestamp bigint

set @timestamp = 1334034120644

 

Select dateadd(S, @timestamp/1000, '1970-01-01')

 

 

아래와 같이 함수로 만들어서 편리하게 사용할 수 있다.

CREATE FUNCTION dbo.fn_TimestampToDateTime (@Timestamp BIGINT)

RETURNS DATETIME

AS

BEGIN

SET @Timestamp = @Timestamp/1000

RETURN (SELECT DATEADD(second,@Timestamp, CAST('1970-01-01 00:00:00' AS datetime)))

END;

GO

 

 

[참고자료]

http://stackoverflow.com/questions/2904256/how-can-i-convert-bigint-unix-timestamp-to-datetime-in-sql-server

 

 

2016-05-04 / 강성욱 / http://sqlmvp.kr

 

SQL Server, SQL, Timestamp, datetime, convert timestamp to datetime, dateadd(), 시간함수, 타임스탬프

반응형