"select * from MyTalbe where start_time >= '2018-12-12' AND end_time <= '2019-12-12'"
select * from 表名 where 日期列名 between '开始时间' and '结束时间'查询字段日期列在开始时间(含)至结束时间(含)之间表名的记录。
SQL SELECT 语句
SELECT 语句用于从表中选取数据。
结果被存储在一个结果表中(称为结果集)。
个人觉得难点在每隔2小时怎么取, 我的方式是取日期(0时0分0秒)然后加上小时数除以2作为标志每2小时的时间间隔(如果时间间隔不是整的小时, 且可以被24整除, 那么尚未想到好的方法)而取前3条记录则有row_number分组函数可以使用.
示例(SQL Server 2005或以上)如下:
declare @tb table (ss int, dt datetime) -- 定义表变量insert into @tb -- 插入测试用数据
select 1, '2013/1/20 12:01'
union
select 7, '2013/1/20 12:01'
union
select 3, '2013/1/20 13:21'
union
select 8, '2013/1/20 13:13'
union
select 5, '2013/1/20 12:049'
-- 测试SQL, dt为时间值, hourSpan为分在哪个时间间隔内
select ss, dt, hourSpan
from (
-- 用row_number来按时间间隔分组编号, 且按ss字段升序编号
select ss, row_number() over (partition by convert(nvarchar(10), dt, 120) + '_' + cast(datepart(hour, dt) / 2 as nvarchar(2)) order by ss) as rownumber, dt, convert(nvarchar(10), dt, 120) + '_' + cast(datepart(hour, dt) / 2 as nvarchar(2)) as hourSpan
from @tb
) s
where s.rownumber <= 3 -- 取分组编号值小于等于3的记录
将这个逻辑套用过去, 大概能满足你的需求. 不过, 如果是经常执行这样的查询, 建议建一个字段存此时间间隔值或使用视图, 不然每次查询都有计算, 速度不好.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)