2011-12-16 106 views
2

如何在SQL Server中將13位數字如1314637182953轉換爲datetime?鑄造和轉換都會直接導致算術溢出錯誤!SQL Server - 將13位數字轉換爲datetime

同樣的結果與下面的查詢:

select Convert(datetime, cast(START_DATE as varchar(8)), 112), * 
from table 
+1

是什麼數表示? – dasblinkenlight 2011-12-16 19:32:05

+0

它的列定義是長度爲9和精度爲19的數字,但名稱(START_DATE)建議它包含一個日期。該列中的所有值都是13位數字,我需要從中獲取實際日期。 – legendofawesomeness 2011-12-16 19:34:33

回答

5

假設它在毫秒UNIX time,嘗試這個辦法:從你的帖子,SQL-2008的回報

DATEADD(SECOND, START_DATE/1000 ,'1970/1/1') 

對於數量2011-08-29 16:59:42.000

1

我們已經遠遠超過了這個時代(1/1/1970),你可能會因上面的代碼而出現溢出錯誤。
可以由所討論鑄造字段作爲BIGINT數據類型容易地固定由1000如下劃分之前:

DATEADD(SECOND, CAST(START_DATE as BIGINT)/1000 ,'1970/1/1') 
相關問題