SQL,从TimeStamp到相对时间

时间:2017-01-12 19:49:54

标签: sql sql-server tsql datetime

对于这个SQL,

SELECT CID, Time, Val 
FROM MyTable 
WHERE CID = 8 

我得到以下数据,

CID, Time, Val
8,2016-10-19 13:49:06.217,7.036
8,2016-10-19 13:49:15.237,6.547
8,2016-10-19 13:49:46.063,6.292
8,2016-10-19 13:49:57.387,5.998

我希望每个Time值减去开始时间,可以通过

计算
SELECT MIN(Time) StartTime
FROM MyTable 
WHERE CID = 8 

我知道我可以定义一个T-SQL变量来执行此操作,但是,是否可以在一个SQL中执行任务,获取每个记录的相对时间而不是绝对时间?

1 个答案:

答案 0 :(得分:4)

您可以使用min()窗口函数来获取每个id的最短时间,并将其用于减法。

select cid,time,val, 
datediff(millisecond,min(time) over(partition by cid),time) as diff
from mytable

根据您的要求更改差异间隔(显示millisecond)。如果差异太大,可能会出现溢出。