考虑以下查询(在MSSQL 2008中):

SELECT dateModified FROM SomeTable;


这将以javascript格式返回浮点数(自1970年以来的毫秒数):

dateModified
============
1301598290687
1071003581343
1311951478593


如何在选择中将其转换为datetime2?

最佳答案

使用@Mikeal Eriksson's answer here中的公式。

我将float转换为bigint,然后创建datetime:

select
  DATEADD(MILLISECOND,
          cast(dateModified as bigint) % 1000,
          DATEADD(SECOND, cast(dateModified as bigint) / 1000, '19700101'))
from sometable


SQL Fiddle with Demo

07-26 03:29