2016-11-16 36 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

這就是關於SO的類似問題的答案。以爲我會嘗試它。已經嘗試了一個普通的「演員」,但無濟於事 – 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年 - 超過了SQL 9999的限制 - – Cato

相關問題