oracle列出指定范围内的时间点
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle列出指定范围内的时间点相关的知识,希望对你有一定的参考价值。
例如查询时间段为2011-03-06 10:24:00 到2011-03-07 08:00:00,那么列出此时间范围内的时间小时点:
2011-03-06 10
2011-03-06 11
2011-03-06 12
2011-03-06 01
........................
2011-03-07 07
2011-03-07 08
该怎么样查询呢?
已经写出来了 .
select to_char(t.create_date) from (
SELECT TO_CHAR(to_date('2012-03-27 21:55:55', 'yyyy-mm-dd hh24:mi:ss') - ROWNUM/24 +1 / 24,
'yyyy-mm-dd hh24') create_date
FROM DUAL
CONNECT BY ROWNUM <= 24 ) t
where to_date(t.create_date,'yyyy-mm-dd hh24') between to_date('2012-03-26 21', 'yyyy-mm-dd hh24')
and to_date('2012-03-27 11', 'yyyy-mm-dd hh24') order by create_date asc
结果我为:数据在没有明确的时分秒的情况,系统默认为00:00:00.
2011-03-06 11
2011-03-06 12
........................
2011-03-07 07
2011-03-07 08追问
不好意思,不是这个意思.你的这个查询在保证表中column_name 字段每个时间段的情况下才能查出来时间点.我要列出所有时间点,应该用到connect by.不知道该怎么样做?
追答说一下需求吧,这样理解有些困难。
Oracle 函数 “数据控制,指定某些人只能查看他权限范围内的信息”
1 create or replace function work_plan_mask (p_schema VARCHAR2,p_table VARCHAR2) 2 3 return Varchar2 AS -- 数据控制,指定某些人只能查看他权限范围内的信息 4 5 v_predicate VARCHAR2(1000) := ‘1=2‘; 6 v_personcode Personnel.Person_Code%TYPE := SYS_CONTEXT(get_context_name,‘PERSON_CODE‘); 7 v_user_name work_plan.reporter%type := SYS_CONTEXT(get_context_name,‘APP_USER_NAME‘); -- 获取当前账号 8 v_number NUMBER; 9 10 cursor get_work_plan_role is 11 select count(*) 12 from application_roles 13 WHERE role_name = ‘work_plan_search‘ AND username = v_user_name; -- work_plan_search:系统里(给了权限)的角色 14 15 BEGIN 16 17 IF v_personcode in(‘00013‘,‘00016‘) THEN -- 指定这几个人可看 18 RETURN ‘1=1‘; -- 返回 true 19 END IF; 20 21 insert into person_code_temp -- 将下面查询出来的结果插入person_code_temp(临时表)表中 22 SELECT p.PERSON_CODE -- 树状查询 (查出当前编号以及下一级、下下一级...等 编号,比如:总经理以及所有下属的编号) 23 FROM PERSONNEL p 24 CONNECT BY p.MANAGER = PRIOR p.PERSON_CODE 25 START WITH p.PERSON_CODE = v_personcode; 26 27 open get_work_plan_role; 28 fetch get_work_plan_role into v_number; 29 close get_work_plan_role; 30 31 v_predicate := ‘reporter = ‘‘‘ || v_user_name || ‘‘‘ OR ‘ || v_number || ‘ > 0 ‘ || 32 ‘ OR INSERT_USER = ‘‘‘ || v_user_name || ‘‘‘‘ || 33 ‘ OR INSERT_USER IN ( SELECT get_username(P.PERSON_CODE) FROM person_code_temp P)‘; 34 35 RETURN v_predicate; 36 end work_plan_mask;
这个函数 SYS_CONTEXT(),可以参考 http://blog.csdn.net/rfb0204421/article/details/7861332 或 http://blog.csdn.net/kadwf123/article/details/8065673
以上是关于oracle列出指定范围内的时间点的主要内容,如果未能解决你的问题,请参考以下文章