我想通过SQL查询将datetime作为13位数字插入SQL表中

时间:2018-09-17 19:29:08

标签: sql sql-server datetime casting

表列assignedDate的值是一个13位数字,例如1536346340276,格式为2014-12-31 15:17:24.736

插入带有查询的数据

INSERT INTO Test (id, assignedDate)
VALUES (1, (SELECT CAST(CONVERT(DATETIME, '2014-12-31 15:17:24.736') AS NUMERIC)))

结果为42003

如何通过SQL查询转换13位数字?

1 个答案:

答案 0 :(得分:0)

如果我们假设1536346340276实际上没有转换为2014-12-31 15:17:24.736,但是13位数字只是该表中当前数据的一个示例,而提供的日期就是该示例的一个示例。输入格式将是Unix时间

SELECT DATEADD(second, 1536346340276/1000 ,'1970/1/1')          -- is 2018-09-07 18:52:20.000
SELECT DATEDIFF_BIG(MILLISECOND,{d '1970-01-01'}, getdate()), GETDATE()     -- is 1537195014053 at 2018-09-17 14:36:54.053

如果您使用的是SQL Server 2016或更高版本,则新插入内容应如下所示:

INSERT INTO Test (id, assignedDate)
VALUES (1, (SELECT DATEDIFF_BIG(MILLISECOND,{d '1970-01-01'}, getdate())))