我尝试计算sql server中两个日期之间的差异。这个 startdate
是,如果“中断”=1,“自动”=0。这个 enddate
是下一个日期,其中“中断”=0,“自动”=1。我试着使用这个函数
DATEDIFF(startdate, enddate, ...)
例如,我有以下数据:
ID Date Interrupt Automatic
-------------------------------------------------------
15 2020-07-06 09:56:35.630 0 1
14 2020-07-06 09:56:35.630 1 0
13 2020-07-06 09:56:33.407 1 1
12 2020-07-06 09:56:32.490 1 0
11 2020-07-06 09:56:30.073 0 1
10 2020-07-06 09:56:30.073 1 1
9 2020-07-06 09:56:29.070 1 1
8 2020-07-06 09:56:26.867 1 1
7 2020-07-06 09:56:26.867 1 0
6 2020-07-06 09:56:25.863 0 1
5 2020-07-06 09:56:23.897 1 0
4 2020-07-06 09:56:23.500 1 1
3 2020-07-06 09:56:19.340 1 0
2 2020-07-06 09:56:17.003 0 1
1 2020-07-06 09:56:16.220 1 1
在本例中,我要计算id为3的行和id为6-->datediff的行之间的差异(id3.date,id6.date,毫秒)
本例中的下一种情况是,id 11和id 7-->datediff(id7.date,id11.date,毫秒)的日期之间的差异
结果应该是这样的:
ID Date Interrupt Automatic Interrupttime
------------------------------------------------------------------
15 2020-07-06 09:56:35.630 0 1
12 2020-07-06 09:56:32.490 1 0 3,140
11 2020-07-06 09:56:30.073 0 1
7 2020-07-06 09:56:26.867 1 0 3,206
6 2020-07-06 09:56:25.863 0 1
3 2020-07-06 09:56:19.340 1 0 6,523
不同的是以秒为单位的中断时间。数据集将在将来增长,所以我想创建一个用于自动计算的作业。
我的尝试失败了。我希望你能帮我计算一下中断时间。我提前感谢你。
致以最诚挚的问候
基督教的
2条答案
按热度按时间kqhtkvqz1#
嗯。使用累计最大值获取每行的开始日期。然后过滤到结束日期并计算差异:
t3irkdon2#
如果我使用代码,我会得到以下回报:
最后一列取决于第一行的日期。开始日期在每种情况下是相同的。但是如果我们看这个例子,id3是一对id6,id7是一对id11,依此类推。每种情况都有一个开始和结束日期。