snrg.net
当前位置:首页 >> 如何在SQL中按时间段查询数据 >>

如何在SQL中按时间段查询数据

select * from ms_cf01 a where a.kfrq between to_date('20100101 180000','yyyymmdd hh24miss') and to_date('20101231 180000','yyyymmdd hh24miss') and to_char(a.kfrq,'hh24miss') between '180000' and '240000' 主要用到 to_char,to_date对时间字段的转换方法,具体使用方法可baidu 如果这么查询,主要是第2个条件无法用上索引,所以最好的方式是在涉及表的时候将该字段拆成2个字段 日期 ,时间,并用整形表示

select * from 表 where 日期字段>='开始日期' and 日期字段and convert(char(8),日期字段,108)>='开始时间' and convert(char(8),日期字段,108)

首先你的表里要有时间的列select * from table1 where 时间列 between 时间1 and 时间2

时间类型和varchar()可以用convert()转换的的 直接查询就可以 select *from biao where start_time between ''and ''

假设a表的时间字段为a_date,b表的字段为b_date,再假设a表的id为b表a_id的fk,因此建议你可以试用如下语句: select datediff(day,a.a_date,b.b_date) from a,b where a.id=b.a_id 其中:day代表这a_date与b_date时间之间的天数;该参数还有其他格式,请搜索sql帮助; 另外也可以使用select a.a_date-b.b_date from a,b where a.id=b.a_id 该语句得出的时间是距离1900-01-01 00:00:00起的时间值

SELECT * FROM 表名 WHERE 时间 BETWEEN '2016-04-01' AND '2017-02-03'SELECT * FROM 表名 WHERE 时间 BETWEEN '2016-04-01 10:12' AND '2017-02-03 14:35'

用group by语句可以实现.如test表中有如下数据:要查出2月25号一天中每个小时的cnt的总和,可采用如下语句:with t as(select number rn from master..spt_values where type='P' and number<=23) select t.rn 小时,SUM(isnull(cnt,0)) 数量 from t left join test on t.rn=cast(substring(CONVERT(varchar,begin_date,120),12,2) as int) group by t.rn查询结果:

select * from 表名 where 时间字段名 between 起始时间 and 截止时间 注意时间顺序一定要是起始在前~

select * from table_name where convert(char(14),你的时间字段名称,20) between '20100701192000' and '20100731212000'

select count(ID), convert(VARCHAR(10),[date],120) from T group by convert(VARCHAR(10),[date],120)

网站首页 | 网站地图
All rights reserved Powered by www.snrg.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com