
oracle的日期条件查询
现在有多个表(1~n),每个表里面又有很多条记录(具体条数不知道)。现在需要的是,对这些表进行条件查询,把符合查询日期的记录取出来放到一个表中。比如说把各个表中从27-五...
现在有多个表(1 ~ n),每个表里面又有很多条记录(具体条数不知道)。现在需要的是,对这些表进行条件查询,把符合查询日期的记录取出来放到一个表中。比如说把各个表中 从 27-五月 -2004 07:00:00 AM 到 27-六月 -2004 07:00:00 AM 之间的记录拿出来,放到表名为pdbase的表中,请问怎么写程序,十分感谢
之所以能进行条件查询,是因为这些表的第一列就是我所描述的日期的形式,所以想根据这个日期,从各个表中选出满足条件的记录。 展开
之所以能进行条件查询,是因为这些表的第一列就是我所描述的日期的形式,所以想根据这个日期,从各个表中选出满足条件的记录。 展开
6个回答
展开全部
--如果表个数是不确定的 写个存储过程吧 调用时输入表名作为参数即可自动
--将记录取出插入pdbase表中
create or replace procedure p_name
(M_tablename in varchar) --需要提取数据的表名
as
--定义过程中的变量,变量类型根据自己需要定义,varchar2类型的需带精度
L_column1 varchar2(20);
L_column2 varchar2(20);
L_column3 varchar2(20);
--定义一个游标
CURSOR C_CHARGES IS
select column1,column2,column3 --记录的列多的话,可以多定义几个
from M_tablename
where datetime >=
to_date('2004-05-27 07:00:00', 'yyyy-mm-dd hh24:mi:ss')
and
datetime <=
to_date('2004-06-27 07:00:00', 'yyyy-mm-dd hh24:mi:ss')
begin
OPEN C_CHARGES;
LOOP
FETCH C_CHARGES
INTO L_column1,L_column2,L_column3
EXIT WHEN C_CHARGES%NOTFOUND;
insert into pdbase
(column1,column2,column3)
values
(L_column1,L_column2,L_column3)
end loop;
CLOSE C_CHARGES;
end;
--如果表个数是确定的,且只要查询效果,可直接使用合并查询
select * from t_test_1
where dt>=to_date('2010-04-03 07:00:00', 'yyyy-mm-dd hh24:mi:ss') and
dt<=to_date('2010-04-10 07:00:00', 'yyyy-mm-dd hh24:mi:ss')
union
select * from t_test_2
where dt>=to_date('2010-04-03 07:00:00', 'yyyy-mm-dd hh24:mi:ss') and
dt<=to_date('2010-04-10 07:00:00', 'yyyy-mm-dd hh24:mi:ss')
union
select * from t_test_3
where dt>=to_date('2010-04-03 07:00:00', 'yyyy-mm-dd hh24:mi:ss') and
dt<=to_date('2010-04-10 07:00:00', 'yyyy-mm-dd hh24:mi:ss')
--有几个表,写几个union连接在后面即可
--将记录取出插入pdbase表中
create or replace procedure p_name
(M_tablename in varchar) --需要提取数据的表名
as
--定义过程中的变量,变量类型根据自己需要定义,varchar2类型的需带精度
L_column1 varchar2(20);
L_column2 varchar2(20);
L_column3 varchar2(20);
--定义一个游标
CURSOR C_CHARGES IS
select column1,column2,column3 --记录的列多的话,可以多定义几个
from M_tablename
where datetime >=
to_date('2004-05-27 07:00:00', 'yyyy-mm-dd hh24:mi:ss')
and
datetime <=
to_date('2004-06-27 07:00:00', 'yyyy-mm-dd hh24:mi:ss')
begin
OPEN C_CHARGES;
LOOP
FETCH C_CHARGES
INTO L_column1,L_column2,L_column3
EXIT WHEN C_CHARGES%NOTFOUND;
insert into pdbase
(column1,column2,column3)
values
(L_column1,L_column2,L_column3)
end loop;
CLOSE C_CHARGES;
end;
--如果表个数是确定的,且只要查询效果,可直接使用合并查询
select * from t_test_1
where dt>=to_date('2010-04-03 07:00:00', 'yyyy-mm-dd hh24:mi:ss') and
dt<=to_date('2010-04-10 07:00:00', 'yyyy-mm-dd hh24:mi:ss')
union
select * from t_test_2
where dt>=to_date('2010-04-03 07:00:00', 'yyyy-mm-dd hh24:mi:ss') and
dt<=to_date('2010-04-10 07:00:00', 'yyyy-mm-dd hh24:mi:ss')
union
select * from t_test_3
where dt>=to_date('2010-04-03 07:00:00', 'yyyy-mm-dd hh24:mi:ss') and
dt<=to_date('2010-04-10 07:00:00', 'yyyy-mm-dd hh24:mi:ss')
--有几个表,写几个union连接在后面即可
展开全部
INSERT INTO pdbase (A,B,C....)SELECT A,B,C FROM (SELECT A,B,C...FROM 表1 union SELECT A,B,C...FROM 表2 union SELECT A,B,C...FROM 表3 union ....) WHERE pdbase.P_DATE BETWEEN TO_DATE('2004-05-27 07:00:00','yyyy-mm-dd hh24:mi:ss' ) AND TO_DATE('2004-06-27 07:00:00', 'yyyy-mm-dd hh24:mi:ss')
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
log_table表
table_date是字段
from_str to_str 2个时间段字符串
select * from log_table where table_date >= TO_DATE('from_str','YYYY-MM-DD HH-MM-SS') and table_date <= TO_DATE('to_str','YYYY-MM-DD HH-MM-SS')
table_date是字段
from_str to_str 2个时间段字符串
select * from log_table where table_date >= TO_DATE('from_str','YYYY-MM-DD HH-MM-SS') and table_date <= TO_DATE('to_str','YYYY-MM-DD HH-MM-SS')
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select * from tablename where eventtimestamp >=
to_date('2004-05-27 07:00:00', 'yyyy-mm-dd hh24:mi:ss')
and eventtimestamp <=
to_date('2004-06-27 07:00:00', 'yyyy-mm-dd hh24:mi:ss')
to_date('2004-05-27 07:00:00', 'yyyy-mm-dd hh24:mi:ss')
and eventtimestamp <=
to_date('2004-06-27 07:00:00', 'yyyy-mm-dd hh24:mi:ss')
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
insert into pdbase select * from t_a,t_b,t_c where t_a.date >='' and t_a.data<=''
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询