SQL数据库按时间间隔查询记录

mojifeng 2009-03-06 05:30:41
我在数据库查询中,实现任意一段时间内,间隔任意一时间段查询数据。比如2008-1-3 13:47:00至2008-1-3 13:55:00之间的时间,查询间隔2分钟的数据,
既查询13:47:00、13:49:00、13:51:00、13:53:00、13:55:00时间对应的数据。
...全文
2193 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
pl_mm 2009-05-23
  • 打赏
  • 举报
回复
a
richard1987217 2009-03-09
  • 打赏
  • 举报
回复
楼上是天神
问个问题好吗
有个日志表如下

时间 用户 动作
XX XX XX




我想查询某个时间某个用户做了什么动过
或者某个特定动作都有哪些人做过,都在什么时间
该怎么做呢
dawugui 2009-03-09
  • 打赏
  • 举报
回复
1楼的PL_MM又从哪里拷贝我的代码?
贾桂权 2009-03-09
  • 打赏
  • 举报
回复 1
select * from a where todate between '2008-01-03 13:47:00' and '2008-1-3 13:55:00'
and datediff(mi,'2008-01-03 13:47:00',todate) % 2=0
Andy__Huang 2009-03-07
  • 打赏
  • 举报
回复
都没有数据源吗?
不知道楼主这样做的用意是什么?
肥龙上天 2009-03-06
  • 打赏
  • 举报
回复

create procedure prco_getResult
@beginDate datetime,
@endDate datetime
as
begin
create table #1(id int identity(1,1),dd datetime)

while @endDate > @beginDate
begin
insert #1 values(@beginDate)
set @beginDate = dateadd(mi,2,@beginDate)
end

select * from tb a join #1 b on a.date = b.dd

end
肥龙上天 2009-03-06
  • 打赏
  • 举报
回复
[Quote=引用楼主 mojifeng 的帖子:]
我在数据库查询中,实现任意一段时间内,间隔任意一时间段查询数据。比如2008-1-3 13:47:00至2008-1-3 13:55:00之间的时间,查询间隔2分钟的数据,
既查询13:47:00、13:49:00、13:51:00、13:53:00、13:55:00时间对应的数据。
[/Quote]


参考.

pl_mm 2009-03-06
  • 打赏
  • 举报
回复

--这样??

--这个按每五分钟的,你稍微改改就行了.
[code=SQL]create table tb(时间 datetime , 金额 int)
insert into tb values('2007-1-1 10:00:23' , 8 )
insert into tb values('2007-1-1 10:01:24' , 4 )
insert into tb values('2007-1-1 10:05:00' , 2 )
insert into tb values('2007-1-1 10:06:12' , 3 )
insert into tb values('2007-1-1 10:08:00' , 1 )
insert into tb values('2007-1-1 10:12:11' , 5 )
go

--时间段>=10:00:00 and 时间段<10:05:00
select dateadd(mi,(datediff(mi,convert(varchar(10),dateadd(ss,-1,时间),120),dateadd(ss,-1,时间))/5)*5,convert(varchar(10),时间,120)) as 时间段,
count(*) as 行数,
sum(金额) as 总金额
from tb
group by dateadd(mi,(datediff(mi,convert(varchar(10),dateadd(ss,-1,时间),120),dateadd(ss,-1,时间))/5)*5,convert(varchar(10),时间,120))
/*
时间段 行数 总金额
------------------------------------------------------ ----------- -----------
2007-01-01 10:00:00.000 3 14
2007-01-01 10:05:00.000 2 4
2007-01-01 10:10:00.000 1 5
(所影响的行数为 3 行)
*/

--时间段>10:00:00 and 时间段<=10:05:00
select dateadd(mi,(datediff(mi,convert(varchar(10),dateadd(ss,1,时间),120),dateadd(ss,1,时间))/5)*5,convert(varchar(10),时间,120)) as 时间段,
count(*) as 行数,
sum(金额) as 总金额
from tb
group by dateadd(mi,(datediff(mi,convert(varchar(10),dateadd(ss,1,时间),120),dateadd(ss,1,时间))/5)*5,convert(varchar(10),时间,120))
/*
时间段 行数 总金额
------------------------------------------------------ ----------- -----------
2007-01-01 10:00:00.000 2 12
2007-01-01 10:05:00.000 3 6
2007-01-01 10:10:00.000 1 5

(所影响的行数为 3 行)
*/

drop table tb

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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