【问题标题】:SQL, From TimeStamp to relative timeSQL,从时间戳到相对时间
【发布时间】:2017-01-12 19:49:54
【问题描述】:

对于这个 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 中完成任务,获取每条记录的相对时间而不是绝对时间?

【问题讨论】:

  • 加入计算最小值的子查询。
  • @PM77-1,这就是我遇到问题并想知道的地方,加入子查询。你能告诉我怎么做吗? ... 两个小时过去了,我暂时将vkp的回复标记为答案,但我仍然希望您能提出子查询解决方案。

标签: sql sql-server tsql datetime


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2011-08-31
    • 2020-08-01
    • 2011-02-11
    • 1970-01-01
    • 1970-01-01
    • 2021-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多