SQL Server 2014如何存储插入之间的时间间隔
我在SQL Server 2014中工作,试图创建一个列来存储SQL插入之间的间隔。我该怎么做?我用一个insert语句插入来自多个传感器的电流值。我希望这张桌子看起来像附件中的图片 需要时,只需使用SQL Server 2014如何存储插入之间的时间间隔,sql,sql-server,sql-server-2014,Sql,Sql Server,Sql Server 2014,我在SQL Server 2014中工作,试图创建一个列来存储SQL插入之间的间隔。我该怎么做?我用一个insert语句插入来自多个传感器的电流值。我希望这张桌子看起来像附件中的图片 需要时,只需使用lag()计算: select t.*, datediff(second, lag(timestamp) over (order by timestamp), timestamp ) as diff_in_seconds from t; 创建表时不需要执
lag()
计算:
select t.*,
datediff(second, lag(timestamp) over (order by timestamp), timestamp
) as diff_in_seconds
from t;
创建表时不需要执行此操作。您可以使用以下命令
- 按
top(1)查找最后插入的记录,并按时间戳desc排序
- 插入新记录,并将值设置为
Iterval=now-lastinserted.TimeStamp
希望这对您有所帮助您的示例数据毫无意义。14来自哪里?只使用
时间戳
列有什么问题?对不起。14是每次插入之间的秒数。这是一个任意数字。我用正确的秒间隔重新加载了一个更好的图像。由于间隔列可以在以后基于时间戳列生成,为什么在插入期间计算它。也许您可以在插入之前通过-MAX(TimeStamp)
来实现这一点,但事情会变得复杂。我使用了lag,但有数千条记录和多个传感器,查询需要很长时间。@JaySettle您有时间戳索引吗?我没有。我会试试看。通过时间戳索引,我有以下内容:700行需要1秒。2000行需要11秒。6000行需要19秒。@JaySettle。这个问题没有具体说明有关传感器的任何内容。你应该问另一个问题,包括你想做什么,你正在使用的查询,以及你拥有的索引的全部信息。谢谢,我喜欢这个。您是否建议在每次插入时运行存储过程?这可能行得通,但我担心缩放。。。存储过程必须找到该传感器的“最大”时间戳,该时间戳实际上是另一个传感器表的联接。如果我有数千个微控制器,带有数千条记录的多个传感器,它需要搜索的记录越多,需要的时间会越长吗?你不需要找到最大值,你会得到最后插入的记录,因为它会保留最大时间戳