用于计算日期和时间差的SQL Server 2012查询

用于计算日期和时间差的SQL Server 2012查询,sql,sql-server-2012,Sql,Sql Server 2012,您好,我需要计算这个timestamp事务列上的时间差,格式如下,我正在尝试使用DATEDIFF函数,但没有效果。谢谢你的帮助 Txtimestamp 2016-01-05 12:16:51.000 2016-01-05 12:16:51.000 2016-01-18 12:24:16.000 2016-01-18 12:24:16.000 2016-01-20 08:15:32.000 2016-01-20 08:15:32.000 2016-01-20 12:24:29.000 2016-0

您好,我需要计算这个timestamp事务列上的时间差,格式如下,我正在尝试使用DATEDIFF函数,但没有效果。谢谢你的帮助

Txtimestamp
2016-01-05 12:16:51.000
2016-01-05 12:16:51.000
2016-01-18 12:24:16.000
2016-01-18 12:24:16.000
2016-01-20 08:15:32.000
2016-01-20 08:15:32.000
2016-01-20 12:24:29.000
2016-01-20 12:24:29.000
2016-01-29 12:18:11.000
2016-01-29 12:18:11.000
2016-02-01 12:16:43.000
2016-02-01 12:16:43.000

你想要这样的吗

select datediff(second, lag(txtimestamp) over (order by txtimestamp), txtimestamp) as diff_in_seconds
from t;

你想要这样的吗

select datediff(second, lag(txtimestamp) over (order by txtimestamp), txtimestamp) as diff_in_seconds
from t;

我有这样的想法,但又一次没有戈登的回答那么清晰。我不确定性能会有什么不同。可能很多,因为这需要执行两个子查询

 SELECT tA.txtimestamp, tB.txtimestamp, DATEDIFF(second, tA.txtimestamp, tB.txtimestamp) AS diff
 FROM (SELECT row_num = ROW_NUMBER() OVER (ORDER BY txtimestamp), txtimestamp
       FROM your_table) AS tA 
       INNER JOIN
      (SELECT row_num = ROW_NUMBER() OVER (ORDER BY txtimestamp), txtimestamp
       FROM your_table) AS tB ON tA.row_num = tB.row_num - 1

这很笨重,但肯定是另一种可能性。您需要将连接条件中的“-”修改为“+”,这取决于您希望如何得出差异。

我想到了类似的内容,但它又不像Gordon的答案那么清晰。我不确定性能会有什么不同。可能很多,因为这需要执行两个子查询

 SELECT tA.txtimestamp, tB.txtimestamp, DATEDIFF(second, tA.txtimestamp, tB.txtimestamp) AS diff
 FROM (SELECT row_num = ROW_NUMBER() OVER (ORDER BY txtimestamp), txtimestamp
       FROM your_table) AS tA 
       INNER JOIN
      (SELECT row_num = ROW_NUMBER() OVER (ORDER BY txtimestamp), txtimestamp
       FROM your_table) AS tB ON tA.row_num = tB.row_num - 1

这很笨重,但肯定是另一种可能性。您需要将连接条件中的“-”修改为“+”,这取决于您希望差异的显示方式。

什么和什么之间的时间差?从列表中的第一个值到第二个值之间的时间差,依此类推。并显示它们之间的差异what和what之间的时间差?列表中第一个值到第二个值之间的时间差,依此类推。并显示它们之间的差异哇,真漂亮。我会在表中添加一个行号列,并使用行号减1进行自联接。这个脆多了。谢谢分享。帕特,你能分享你最后评论的代码吗?我也想试试。谢谢,真漂亮。我会在表中添加一个行号列,并使用行号减1进行自联接。这个脆多了。谢谢分享。帕特,你能分享你最后评论的代码吗?我也想试试。谢谢