MSSQL-将1970年以来的毫秒转换为datetime2
考虑以下查询(在MSSQL 2008中): 这将返回javascript格式的浮点值(自1970年以来的毫秒): 如何使用中的公式将其转换为select?中的datetime2 我会将float转换为bigint,然后创建datetime: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
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