Oracle按时间段取数据

我要从库里边每隔一定的时间取1个小时前的数据,也就是说比如现在是17点多,我要取16点整到17点整的数据,18点多的时候取17点整到18点整的数据,假设这个字段叫time... 我要从库里边每隔一定的时间取1个小时前的数据,也就是说比如现在是17点多,我要取16点整到17点整的数据,18点多的时候取17点整到18点整的数据,假设这个字段叫time,表名为table,数据库为Oracle的话应该怎么写,还有到了0点了应该怎么兼容,如果Sybase的也写上更好啊 展开
 我来答
badkano
2013-02-17 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885372
团长

向TA提问 私信TA
展开全部
给你简单写个,不过到时候你得定义一个job自动调度(每小时执行),这里我就按你说的写个存储过程
先建立一个存储每个小时数据的表,就叫test吧,之前的你取数据的表叫test1

PROCEDURE SP_AUTO_HOUR
IS
v_time varchar2(10);
v_time1 varchar2(10);

begin
select to_char(sysdate-1/24,'yyyymmddhh24') into v_time from dual;

select to_char(sysdate,'yyyymmddhh24') into v_time1 from dual;

insert into test select * from test1 where to_char(time,'yyyymmddhh24') between v_time and v_time1;
commit;

end;

你这个完全不用考虑0点的问题,已经计算在内了,到时你可以试试,也可以手动执行一下
追问
这是我根据你写的改的sql语句,你看看哪里不好帮我改改

select * from table where time between to_date(to_char(sysdate-1/24,'yyyymmddhh24'),'yyyymmddhh24') and to_date(to_char(sysdate,'yyyymmddhh24'),'yyyymmddhh24');
追答
语法应该没错误,不用改了,你执行一下检查下数据就行
百度网友f8bde28
2013-02-17 · 超过14用户采纳过TA的回答
知道答主
回答量:80
采纳率:0%
帮助的人:34.1万
展开全部
用case when试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式