2011-01-24 9 views
17

유닉스 타임 스탬프를 SQL 서버 타임 스탬프로 변환하는 데 문제가 있습니다.에포크 타임 스탬프를 SQL 서버 (사람이 읽을 수있는 형식)로 변환하는 중

데이터가 Excel 시트에 있으며 도구를 통해 해당 데이터를 가져옵니다. 그래서 코드 나 SQL Server 타임 스탬프로 Epoch 타임 스탬프를 변환 할 수있는 구문을 찾고 있습니다.

동일한 형식의 3 개의 다른 열이 있습니다. 해당 열의 값을 어떻게 변경할 수 있습니까? 예를 들어

:

  • 신기원 타임 스탬프 --- 1291388960
  • SQL 서버 타임 스탬프 --- 2010-12-03 15 : 09 : 20.000

답변

17

동일한 형식의 3 개의 다른 열이 있습니다. 해당 열의 값을 어떻게 변경할 수 있습니까?

당신이 BIGINT 이후 즉, 열 이름으로 시대 (1 년 1 월 1970)에

update tbl set 
    datetimecol1 = dateadd(s, epochcol1, '19700101'), 
    datetimecol2 = dateadd(s, epochcol2, '19700101'), 
    datetimecol3 = dateadd(s, epochcol3, '19700101') 

당신은 장소에 업데이트 할 수 없습니다를 DATEADD 초 페어링 할 수 있습니다, 테이블에 3 열을 업데이트하려면 column은 datetime 열일 수도 없습니다. 그들을 3 개의 다른 컬럼으로 업데이트해야합니다.

+0

답해 주셔서 감사합니다. 정말 감사합니다.... – Shahsra

13

사용 DATEADD function :

SELECT DATEADD(ss, 1291388960, '19700101') 

... 1970 년 1 월 1 일의 날짜를 지정합니다.이 예에서는 YYYYMMDD f ormat.

DATEADD는 DATETIME 데이터 형식을 반환하므로 테이블 & 열이 설정되어있는 경우 필요에 따라이 함수를 사용하여 INSERT/UPDATE 할 수 있습니다. 세부 사항을 제공하면 명확하게 설명 할 것입니다. DATETIME을 사용하면 CAST or CONVERT을 사용하여 TSQL의 날짜 형식을 지정할 수 있습니다.

+0

구문을 주셔서 감사하지만 약 2 천만 개의 레코드가 있습니다 ..... 어떻게 변환 할 수 있습니까? – Shahsra

+0

@Shahsra : 당신이하고 싶은 것에 달려 있습니다. - 이것이 일시적인 것이라면 임시 테이블을 사용하십시오. 그렇지 않으면 기존 테이블에 열을 추가하거나 원본에서 복제 한 새 테이블을 사용하여 데이터를 덤프 할 열이 필요합니다. 세부 사항을 제공해야합니다. –

+0

많은 분들께 감사드립니다 ... 저는 이미 변경 작업을 수행했습니다. 도움을 주셔서 감사합니다. – Shahsra

관련 문제