首页 > 解决方案 > 我想通过 sql 查询将日期时间作为 13 位数字插入到 SQL 表中

问题描述

表格列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 位数字?

标签: sqlsql-serverdatetimecasting

解决方案


如果我们假设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())))

推荐阅读