2014-11-11 4 views
0

처음에는 SQL Server를 처음 사용했지만 PostgreSQL에 익숙했습니다. 이전에 같은 질문을 한 적이 있으면 친절하게 변명하십시오.SQL Server : Time 데이터 형식에 도움이 필요합니다.

시간 데이터 형식의 열이 포함 된 테이블의 열이 있습니다.

그리고 SQL Server 가져 오기 및 내보내기 마법사를 사용하여 테이블에 데이터를 업로드합니다.

나는 또한 post에서 24 시간이 더 긴 초로 시간을 변환하는 방법에 대해 이전에 게시했습니다.

하지만 지금은 테이블에 업로드되는 시간 데이터 형식의 데이터 형식 인 다른 문제에 직면하고 있습니다.

해당 열에 값이 01-01-1900 14:58입니다. 열 데이터 형식이 시간이므로 값은시, 분 및 초 부분으로 만 업데이트됩니다.

그러나 올바른 값인 38:58:46 인이 형식으로 값을 업데이트하고 싶습니다.

시간 데이터 형식이므로이 값은 테이블 14:58:46에서 업데이트됩니다.

텍스트 기능을 사용하여 초 단위로 변환 할 때.

SELECT 
    (SUBSTRING('14:58:46', 1, 2) * 60 * 60) + 
    (SUBSTRING('14:58:46', 4, 2) * 60) + 
    SUBSTRING('14:58:46', 7, 2) 

결과는 53926이 있지만 실제로는 140326을해야합니다.

데이터 유형으로이 문제를 극복하는 데 도움이 될만한 사람이 있습니까?

미리 감사드립니다.

+0

는 SQL 서버 시간 데이터 형식은 24 시간제를 기준으로 하루의 시간을 나타냅니다 반환합니다. 38:58:46의 시간을 어떻게 얻을 수 있습니까? – MarcE

+0

타임 스탬프가 아닙니다. 일정을 잡은 시간입니다. 일반적으로 38 시간. – Dee

+0

SQL 서버에서 TIME 열은 하루 중의 시간을 의미합니다. 지속 기간을 저장해야하는 경우 정수 열을 사용하고 초 수를 저장하십시오. http://msdn.microsoft.com/en-GB/library/bb677243.aspx – MarcE

답변

0

아래 쿼리를 사용하십시오.

SELECT CAST(SUBSTRING('38:58:46', 1, 2) AS bigint)* 60 * 60 + 
     CAST(SUBSTRING('38:58:46', 4, 2) AS bigint) * 60 + 
     CAST(SUBSTRING('38:58:46', 7, 2) AS bigint) 

이 140326.

+0

제 질문은 어떻게이 '38 : 58 : 46'값을 얻을 수 있습니까? 내 데이터 유형은 시간이므로 '14 : 58 : 46 '이됩니다. – Dee

관련 문제