SQL如何在指定的时间范围内获取所有重复

时间:2010-11-23 20:18:44

标签: sql database sql-server-2005

我的表看起来像

int callid not null,
datetime segstart not null,
varchar calling_pty not null

我想得的是具有相同calling_pty的所有行,每天在5分钟内发生一次以上。

我很难过。我已经看过TOP 1,dateiff,并选择了下一行和上一行示例,但我无法解决这个问题。

我正在使用MS SQL 2005。

谢谢!

1 个答案:

答案 0 :(得分:4)

select t1.callid, t1.segstart, t1.calling_pty
from MyTable t1
inner join MyTable t2 on t1.calling_pty = t2.calling_pty 
    and t1.segstart < t2.segstart
where datediff(mi, t1.segstart, t2.segstart) <= 5 --a difference of 5 minutes 59 secs. still returns 5

请注意,由于DATEDIFF计算了越过日期边界的数量,因此在计算分钟数时可能会略微近似。为了更好的准确性,您可能希望使用

where datediff(s, t1.segstart, t2.segstart) <= 300 --this looks at difference in seconds, so much nmore accurate