两个日期之间的SQL查询日期差异
我想做一些事情,我不知道它是否可行。我有这个疑问:两个日期之间的SQL查询日期差异
SELECT [CreatedOn]
FROM [MyTable的]
正如你可以在图片中看到,有不同的日期。现在我想实现的是获得每行中每个日期/时间之间的时间差。例如,第1行和第2行之间的差异,第2行和第3行等等...... 这可能吗? 谢谢,Laziale
;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
+1哈哈我揍你了 – dotjoe 2012-03-22 21:27:15
假设你正在使用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中多次做了同样的事情。
您可以创建行号的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
s代表什么?我在这里得到错误:http://gyazo.com/a88835cb955dedd5785b9a3b833717e1 – Laziale 2012-03-22 21:31:00
+1打我。 – 2012-03-22 21:31:20
@拉齐亚勒的''代表秒......它会给你两个日期之间的秒数。你得到那个错误是因为你需要''''''后面的'[CreatedOn]'''''''''''''。 – 2012-03-22 21:33:32
超前滞后功能可以做到这一点。 – Randy 2012-03-22 21:17:09
@Randy:但是我们需要等到SQLServer 2012发布。 – a1ex07 2012-03-22 21:19:22