sql查询两个日期之间的日期差
我正在尝试做一些我不知道是否可行的事情。我有一个疑问: 选择[CreatedOn] 从[MyTable] 如图所示,有不同的日期。现在我想要实现的是得到每行中每个日期/时间之间的时差。例如,第1行和第2行、第2行和第3行中的日期之间的差异,等等。。。 可能吗?sql查询两个日期之间的日期差,sql,sql-server-2008,Sql,Sql Server 2008,我正在尝试做一些我不知道是否可行的事情。我有一个疑问: 选择[CreatedOn] 从[MyTable] 如图所示,有不同的日期。现在我想要实现的是得到每行中每个日期/时间之间的时差。例如,第1行和第2行、第2行和第3行中的日期之间的差异,等等。。。 可能吗? 谢谢,Laziale假设您使用C访问数据,这里有一个很好的参考: 基本上,代码是 DateTime oldDate = new DateTime(2002,7,15); DateTime newDate = DateTime.Now; /
谢谢,Laziale假设您使用C访问数据,这里有一个很好的参考: 基本上,代码是
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中也做过很多次同样的事情。假设您使用C访问数据,这里有一个很好的参考: 基本上,代码是
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做了很多次同样的事情。试试datediff
或许
cast((date1-date2) as varchar(255))
语法可能错误,我现在无法检查它。请尝试datediff
或许
cast((date1-date2) as varchar(255))
语法可能错误,我现在无法检查它。您可以创建一个带有行号的cte,然后在下一行进行外部连接以获取日期差异
;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
您可以创建一个行号为的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
超前和滞后函数可以做到这一点。@Randy:但是我们需要等到SQLServer 2012发布。超前和滞后函数可以做到这一点。@Randy:但是我们需要等到SQLServer 2012发布。s代表什么?我在这里出错:@Laziale s代表秒。。。它会给你两次约会之间的秒数。您之所以会出现这个错误,是因为您需要在选择中的t[CreatedOn]之后加上一个“.@Michael Fredrickson哇,谢谢您的编辑…您现在应该得到答案了;s代表什么?我在这里出错:@Laziale s代表秒。。。它会给你两次约会之间的秒数。您之所以会出现这个错误,是因为您需要在选择中的t[CreatedOn]之后加上一个“.@Michael Fredrickson哇,谢谢您的编辑…您现在应该得到答案了;