Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sql查询两个日期之间的日期差_Sql_Sql Server 2008 - Fatal编程技术网

sql查询两个日期之间的日期差

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; /

我正在尝试做一些我不知道是否可行的事情。我有一个疑问:

选择[CreatedOn] 从[MyTable]

如图所示,有不同的日期。现在我想要实现的是得到每行中每个日期/时间之间的时差。例如,第1行和第2行、第2行和第3行中的日期之间的差异,等等。。。 可能吗?
谢谢,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哇,谢谢您的编辑…您现在应该得到答案了;