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 tb1 where ddate>='2010-11-05' and ddateand convert(char(8),ddate,108)>='22:30:00' and convert(char(8),ddate,108)

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

用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 t where datecolumn between '2010-01-20 08:00:00' and '2010-01-21 8:00:00';首先,不知道你的数据库种类是什么其次,你知道数据库这个表的时间列的数据类型是什么姑且使用varchar2类型写了这个sql

假设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起的时间值

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

那就做成存储过程,或者函数;传入参数是 日期开始和结束时间然后循环调用这个函数或者存储过程,每次查询一天,然后在下一轮循环时 加 1 天.

没有给出太多的信息.我就直接写吧:select * from 表awhere --这个是时间段查询时间列 between getdate()-1 and getdate()--模糊查询and column1 like '%这个是模糊查询的内容%'欢迎追问~

select datediff(HH,A表时间,B表时间) where 条件(例如:A表ID=B表ID) 返回的是小时数 HH相隔小时数,MI相隔分钟数,MM相隔月数 select datediff(DD,a.时间,b.时间) from A表 a,B表 b where a.ID=b.ID 或 select datediff(DD,a.时间,b.时间) from A表 a inner join B表 b on a.ID=b.ID

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