Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MSSQL-将1970年以来的毫秒转换为datetime2_Sql_Sql Server 2008_Datetime - Fatal编程技术网

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

MSSQL-将1970年以来的毫秒转换为datetime2,sql,sql-server-2008,datetime,Sql,Sql Server 2008,Datetime,考虑以下查询(在MSSQL 2008中): 这将返回javascript格式的浮点值(自1970年以来的毫秒): 如何使用中的公式将其转换为select?中的datetime2 我会将float转换为bigint,然后创建datetime: select DATEADD(MILLISECOND, cast(dateModified as bigint) % 1000, DATEADD(SECOND, cast(dateModified as bi

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

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

如何使用中的公式将其转换为select?

中的datetime2

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

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

参见

一些Oracle示例-用eqivalent替换to_date():

  SELECT (1301598290687/60/60/24/1000) as Days
   , to_date('01-01-1970','dd-mm-yyyy') as start_date
   , to_date('01-01-1970','dd-mm-yyyy')+(1301598290687/60/60/24/1000) as converted_date
  FROM dual
  /

DAYS                START_DATE      CONVERTED_DATE
---------------------------------------------------------
15064.7950310995    1/1/1970        3/31/2011 7:04:51 PM
创建双表:

CREATE TABLE DUAL
(
DUMMY VARCHAR(1)
)
GO
INSERT INTO DUAL (DUMMY)
 VALUES ('X')
GO
  SELECT (1301598290687/60/60/24/1000) as Days
   , to_date('01-01-1970','dd-mm-yyyy') as start_date
   , to_date('01-01-1970','dd-mm-yyyy')+(1301598290687/60/60/24/1000) as converted_date
  FROM dual
  /

DAYS                START_DATE      CONVERTED_DATE
---------------------------------------------------------
15064.7950310995    1/1/1970        3/31/2011 7:04:51 PM
CREATE TABLE DUAL
(
DUMMY VARCHAR(1)
)
GO
INSERT INTO DUAL (DUMMY)
 VALUES ('X')
GO