我正在尝试做一些我不知道是否可行的事情。我有这个问题:
SELECT [CreatedOn]
来自[MyTable]
正如您在图片中看到的,有不同的日期。现在我想要实现的是获得每一行中每个日期/时间之间的时差。例如,row1和row2中的日期,然后是row2和row3等之间的差异...... 那可能吗? 谢谢,Laziale
答案 0 :(得分:4)
您可以创建一个带行号的cte,然后在下一行创建外部联接以获取datediff
;with t as (
SELECT
[CreatedOn],
rn = row_number() over(order by [CreatedOn])
FROM
[MyTable]
)
select
t.[CreatedOn],
secondsTilNext = datediff(s, t.[CreatedOn], tnext.[CreatedOn])
from
t
left outer join t tnext on tnext.rn = t.rn + 1
答案 1 :(得分:3)
;WITH q AS (
SELECT
CreatedOn,
ROW_NUMBER() OVER (ORDER BY CreatedOn) AS rn
FROM
MyTable
)
SELECT
q1.CreatedOn AS Date,
q2.CreatedOn AS NextDate,
DATEDIFF(SECOND, q1.CreatedOn, q2.CreatedOn) AS SecondDiff
FROM
q q1 JOIN
q q2 ON q1.rn + 1 = q2.rn
答案 2 :(得分:0)
假设您使用C#访问数据,这里有一个很好的参考:http://msdn.microsoft.com/en-us/library/aa287590(v=vs.71).aspx
基本上,代码是
DateTime oldDate = new DateTime(2002,7,15);
DateTime newDate = DateTime.Now;
// Difference in days, hours, and minutes.
TimeSpan ts = newDate - oldDate;
// Difference in days.
int differenceInDays = ts.Days;
您使用的任何.NET语言都应该支持与此类似的内容。我在Python中做了很多次同样的事情。
答案 3 :(得分:0)