2011-12-16 103 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') 
相关问题