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

时间:2012-07-20 16:28:59

标签: sql-server datetime

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

3 个答案:

答案 0 :(得分:3)

这假设自UNIX纪元以来时间戳是ms。它只转换为最接近的秒,但你可以添加ms(见下文)。它必须使用两个步骤,因为dateadd需要一个int。首先通过除以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精度:(哎,可能是更好的方式)

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

给出

2010-08-09 18:41:40.723

答案 1 :(得分:1)

简单的答案是,如果这是一个SQL时间戳列(a.k.a rowversion),则无法做到。根据类型的文档:

  

每个数据库都有一个计数器,该计数器针对每个插入或递增   在包含a的表上执行的更新操作   数据库中的rowversion列。这个计数器是数据库   rowversion。这会跟踪数据库中的相对时间,而不是数据库   可以与时钟关联的实际时间。

...

  

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

答案 2 :(得分:1)

你可以通过这种方式稍微靠近一点:

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

结果:

2010-08-09 18:41:00.000
相关问题