在一个表中的两个日期之间的SQL天计算(SQL Calculate Days between two

2019-09-21 07:51发布

我有一个表dbo.Trans其中包含一个id称为bd_id (VARCHAR)和transfer_date (日期时间),还标识符member_id Pk为trns_id和顺序是

一式两份bd_idmember_id存在于表中。

transfer_date       |bd_id| member_id | trns_id
2008-01-01 00:00:00 | 432 | 111       | 1  
2008-01-03 00:00:00 | 123 | 111       | 2  
2008-01-08 00:00:00 | 128 | 111       | 3  
2008-02-04 00:00:00 | 123 | 432       | 4
.......

对于每个member_id,我想日期之间和每个天量bd_id

EG,构件111用来4322008-01-012008-02-01所以返回应该是2
然后,接下来的将是5

我知道DATEDIFF()函数存在,但我不知道怎么去区别时,日期是在同一个表。

任何帮助表示赞赏。

Answer 1:

你可以尝试这样的事情。

select T1.member_id,
       datediff(day, T1.transfer_date, T3.transfer_date) as DD
from YourTable as T1
  cross apply (select top 1 T2.transfer_date
               from YourTable as T2
               where T2.transfer_date > T1.transfer_date and
                     T2.member_id = T1.member_id
               order by T2.transfer_date) as T3

SE-日期



Answer 2:

您必须选择您想要第一和第二的记录,那么得到他们的日期,拿到这两个日期的DATEDIFF。

DATEDIFF(date1, date2);



Answer 3:

你的问题越来越的下一个成员的日期。

下面是一个使用相关子查询,以获得下一个日期的例子:

select t.*, datediff(day, t.transfer_date, nextdate) as Days_Between
from (select t.*,
             (select min(transfer_date)
              from trans t2
              where t.bd_id = t2.bd_id and
                    t.member_id = t2.member_id and
                    t.transfer_date < t2.transfer_date
             ) as NextDate
      from trans t
     ) t

SQL Server 2012中具有使这一点更容易表达一个函数调用滞后()。



文章来源: SQL Calculate Days between two dates in one table
标签: sql tsql