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 |
[참고자료]
강성욱 / jevida@naver.com
Microsoft SQL Server MVP
Blog : http://sqlmvp.kr
Facebook : http://facebook.com/sqlmvp