日期差异,多个值相对于一个在另一个中的一列

时间:2015-04-10 14:20:27

标签: sql-server

order #| activity | start time | end time      |daydiff
a           b          null       dd/mm/yyyy      e-b
a           c          null       dd/mm/yyyy      e-c
a           d          null       dd/mm/yyyy      e-d
a           e        dd/mm/yyyy      null         null
a           f          null       dd/mm/yyyy      e-f

我需要计算一列中一行的日期(开始时间)和第二列中的多行(结束时间)(开始时间 - 结束时间)之间的天数差异,这样我就可以计算出活动b,c,d,f的结束时间相对于e的开始时间。对于end_time列中的每个活动,并按顺序对其进行分组。 上下文是活动e依赖于a,b,c,d,f但我不知道这些活动的顺序,所以计划使用这些前任活动的结束时间来对它们进行e实际排序。 (这一天差异也将形成后一步的psrt) 我是一个SQL新手,不知道我怎么能做到这一点,或者它是否可能?

2 个答案:

答案 0 :(得分:0)

您可以使用DATEDIFF( datepart , startdate , enddate )

示例:

SELECT DATEDIFF( day , starttime , endtime );

这将以天为单位返回您的差异。

阅读more

答案 1 :(得分:0)

我假设每个订单中有一个start_time列的非null值:

 Select o1.*, datediff(dd, o2.StartDate, o1.EndDate) as DayDiff from Orders o1
 join Orders o2 on o1.OrderID = o2.OrderID and o2.StartTime is not null