sql 查询两条时间相近的数据

手在键盘敲很轻 2020-08-05 05:44:45
我有一张表A (ID CreateTime ...)字段
A CreateTime
1 2020-07-11 11:19:58.580
2 2020-07-11 11:19:58.657

3 2020-08-05 11:19:58.657
4 2020-08-05 11:19:58.580

5 2020-08-06 11:19:58.580
.
.
.
我想用sql把每条数据的CreateTime 相隔1秒的查出来
像这种,我只查出1,2 3,4出来



...全文
2157 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
感谢各位回复
  • 打赏
  • 举报
回复
你这种方式是可行的,我也是根据你的思路,格式转换后实现的,感谢。
正怒月神 2020-08-06
  • 打赏
  • 举报
回复
你这个不就是按照时间分组吗。
去掉.fff那块。group 就好了。

还是补个例子吧
select * from [dbo].[Users];

with
tab as(
select CONVERT(nvarchar(20),createtime,120) ct,COUNT(1) ctCount from [dbo].[Users]
group by CONVERT(nvarchar(20),createtime,120)
having COUNT(CONVERT(nvarchar(20),createtime,120))>1
)
select * from [dbo].[Users] where CONVERT(nvarchar(20),createtime,120) in (select ct from tab);


datafansbj 2020-08-06
  • 打赏
  • 举报
回复
Select *,
Time2 = Cast(CreateTime - (Select top 1 CreateTime From 表名 Where CreateTime < a.CreateTime Order by A) as float)
From 表名 as a

Time2 是按字段 A 排序后,当前记录的 CreateTime 减去上一条记录 CreateTime 的差(单位为天)。
再嵌套一层查询,很容易查出相隔小于 1 秒的记录。
圣殿骑士18 2020-08-05
  • 打赏
  • 举报
回复
你这种需求,可能用数据库游标是最合适的了
张元浩_HY 2020-08-05
  • 打赏
  • 举报
回复
select * from 表 a
where (select COUNT(*) from 表 b
where b.CreateTime between DATEADD(second,-1,a.CreateTime) and DATEADD(second,1,a.CreateTime))>1

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧