2016-11-16 1 views
0

날짜가 float 데이터 형식 인 열이 있습니다. YYYYMMDD 형식입니다. 이 날짜를 날짜/시간 형식으로 다시 변경해야합니다. float를 datetime으로 변환 할 때 산술 오버플로 오류가 발생합니다 (SQL Server 2014)

나는 다음을 수행하려고 :

Select top 1 Date_col,CAST(FLOOR((CAST(Date_col AS numeric(10,10)))) AS DATETIME) from dbo.table_2016 

내가 필요로하는 모든 데이터 형식을 변환하는 것입니다,하지만 난 가능하면 서식을 유지하고 싶습니다.

+0

하는 대신 변환 사용해보십시오. https://msdn.microsoft.com/en-us/library/ms187928.aspx –

+0

'CAST (FLOOR (date_col) AS DATETIME) '? –

+0

그건 비슷한 질문에 대한 대답이었습니다. 나는 그것을 시도 할 것이라고 생각했다. 이미 일반 "캐스트"를 시도했지만 아무 소용이 없습니다 – Adit2789

답변

1

이 시도 :

select 
    DATEFROMPARTS( 
     left(convert(char(8), convert(integer, Date_Col)), 4), 
     substring(convert(char(8), convert(integer, Date_Col)), 5, 2), 
     substring(convert(char(8), convert(integer, Date_Col)), 7, 2)) 
from 
    table_2016; 
+0

고마워요. 귀하의 코드를 실행 한 후에 나는 어떤 이유로 든 날짜가 0 인 내 테이블에 하나의 행이 있음을 깨달았습니다. 이것은 오류를 일으킬 가능성이있는 것입니다. 귀하의 코드가 깨닫도록 도와주었습니다 – Adit2789

+0

알아 냈으니 다행입니다. –

+1

@ Adit2789 - 여기서 문제가 해결되었다고 생각합니다. 1900 년 이래로 날짜가 부동 소수점으로 바뀌고, 소수점 이후의 부분이 시간을 나타내는 것입니다. 형식이 더 비슷합니다. 날짜 문자열이 숫자로 바뀌 었습니다 - 실제로는 55000에 관한 것입니다 - SQLs 9999 한계를 넘어서 - – Cato