Sql server 这是什么日期格式?(001281379300724)

Sql server 这是什么日期格式?(001281379300724),sql-server,datetime,Sql Server,Datetime,如果可能,需要在SQL Server中将此时间戳(001281379300724)转换为YYYY-MM-DD hh:MM:ss格式。有什么建议吗?这假定时间戳是从UNIX时代起的毫秒。它只转换为最接近的秒数,但您可以向其中添加ms(见下文)。它必须使用两个步骤,因为dateadd需要一个整数。首先用60000除以分钟,然后再加秒 DECLARE @yournum bigint SET @yournum = 1281379300724 SELECT DATEADD(ss, (@yourn

如果可能,需要在SQL Server中将此时间戳(001281379300724)转换为YYYY-MM-DD hh:MM:ss格式。有什么建议吗?

这假定时间戳是从UNIX时代起的毫秒。它只转换为最接近的秒数,但您可以向其中添加ms(见下文)。它必须使用两个步骤,因为dateadd需要一个整数。首先用60000除以分钟,然后再加秒

DECLARE @yournum bigint
SET @yournum = 1281379300724     
SELECT DATEADD(ss, (@yournum / 1000)%60 , (DATEADD(mi, @yournum/1000/60, '19700101')))
给予

 2010-08-09 18:41:40.000
要获得ms精度:(恶心,可能是更好的方法)

给予


简单的答案是,如果这是一个SQL时间戳列(又称为SQL时间戳列),则不能。根据该类型的文档:

每个数据库都有一个计数器,该计数器在每次插入或插入时递增 在包含 数据库中的rowversion列。这个计数器就是数据库 rowversion。这将跟踪数据库中的相对时间,而不是 可与时钟关联的实际时间

Transact-SQL时间戳数据类型与时间戳不同 ISO标准中定义的数据类型


您可以通过以下方式稍微靠近:

SELECT DATEADD(MINUTE, 1281379300724/1000/60, '19700101')
结果:

2010-08-09 18:41:00.000

如果我们大致知道“时间戳”是从哪里来的,以及“时间戳”是如何创建的,等等,这会有所帮助。这很可能是UNIX时代以来的几秒钟。在您链接的示例中,它是2010年8月9日星期一18:41:40 GMT。它是1971年以来的毫秒数吗?看起来像UNIX时间戳的UNIX时间戳。请参见@nightcracker注意数字的数量。我想RyanGray可能是对的。1281379300724毫秒将是2010年8月,但1281379300724整秒将是从现在起超过40000年。
SELECT DATEADD(MINUTE, 1281379300724/1000/60, '19700101')
2010-08-09 18:41:00.000