MSSQL - 将自1970年以来的毫秒转换为datetime2

Luk*_*ina 4 sql datetime sql-server-2008

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

SELECT dateModified FROM SomeTable;
Run Code Online (Sandbox Code Playgroud)

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

dateModified 
============ 
1301598290687 
1071003581343 
1311951478593
Run Code Online (Sandbox Code Playgroud)

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

Tar*_*ryn 10

使用@Mikeal Eriksson在这里的答案中的公式.

我会将浮点数转换为bigint,然后创建日期时间:

select 
  DATEADD(MILLISECOND, 
          cast(dateModified as bigint) % 1000, 
          DATEADD(SECOND, cast(dateModified as bigint) / 1000, '19700101'))
from sometable
Run Code Online (Sandbox Code Playgroud)

请参阅SQL Fiddle with Demo