簡體   English   中英

MSSQL - 將自1970年以來的毫秒轉換為datetime2

[英]MSSQL - Convert milliseconds since 1970 to datetime2

請考慮以下查詢(在MSSQL 2008中):

SELECT dateModified FROM SomeTable;

這將以javascript格式返回浮點數(自1970年以來的毫秒數):

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

如何在選擇中將其轉換為datetime2?

使用@Mikeal Eriksson在這里的答案中的公式。

我會將浮點數轉換為bigint,然后創建日期時間:

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

請參閱SQL Fiddle with Demo

一些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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM