oracle查询每天两个时间点间的数据

oracle SQL语句中怎么查询一个月内固定时间段的数据,比如每天上班在8点前签到下班在18点后签到的数据

oracle中定时器是如何用的上网查
declare
jobno number;
begin
dbms_job.submit(jobno,'begin 查询语句; end;',trunc(sysdate)+1,'trunc(sysdate)+1');
end;

这里第一个参数是任务编号,系统自动赋值。也可以采用isubmit来手动指定
第二个参数是需要执行的任务过程,代码长的话,可以将它写到一个存储过程里,再放到里面调用,比如'pro_test;' (pro_test假定为一个存储过程名)
第三个参数是,自动任务第一次执行的时间,如果需要它立即执行,则使用sysdate
最后一个参数,系统根据该参数的值指定下一次的执行时间。如果需要每天0点执行,就用我上面写的
创建好job后,可以在all_jobs中查询它的状态
不需要时,使用dbms_job.remove来移除。dbms_job.broken可以用来停止和启动任务
补充:
描述 INTERVAL参数值
每天午夜12点 ''TRUNC(SYSDATE + 1)''
每天早上8点30分 ''TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)''
每星期二中午12点 ''NEXT_DAY(TRUNC(SYSDATE ), ''''TUESDAY'''' ) + 12/24''
每个月第一天的午夜12点 ''TRUNC(LAST_DAY(SYSDATE ) + 1)''
每个季度最后一天的晚上11点 ''TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), ''Q'' ) -1/24''
每星期六和日早上6点10分 ''TRUNC(LEAST(NEXT_DAY(SYSDATE, ''''SATURDAY"), NEXT_DAY(SYSDATE, "SUNDAY"))) + (6×60+10)/(24×60)''
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-11
问题不是很清楚,按照你说的,可以先把日期字段 to_char,获取到小时,然后用where子句查询
最后,把日期字段再 to_char(日期,‘YYYY-MM-DD’) 进行GROUP BY 汇总,则可以得到你要的结果,当然 如果你的要求是 日期当列名的话,还需要行转列
问的模糊,答的自然也就不清楚,你想好你的需求再问
相似回答