insert into tele_success1 ( select * from tele_success where to_char(h323_connect_time,'yyyy-mm-dd hh24:mi:ss')>='2003-01-23 19:00:00' and to_char(h323_connect_time,'yyyy-mm-dd hh24:mi:ss')>='2003-01-24 09:00:00' );
还是不对,提示是无效字符 是不是我的select语句有问题呀
先在sql/plus中执行select语句看看能不能执行
条件 to_char(h323_connect_time,'yyyy-mm-dd hh24:mi:ss')>='2003-01-23 19:00:00' and to_char(h323_connect_time,'yyyy-mm-dd hh24:mi:ss')>='2003-01-24 09:00:00' 是不是有问题?
select * from tele_success where to_char(h323_connect_time,'yyyy-mm-dd hh24:mi:ss')>='2003-01-23 19:00:00' and to_char(h323_connect_time,'yyyy-mm-dd hh24:mi:ss')<='2003-01-24 09:00:00'; 这个语句就出错,有问题吗?我看不出来问题在哪里?
不用括号 insert into tele_success1 select * from tele_success where to_char(h323_connect_time,'yyyy-mm-dd hh24:mi:ss')>='2003-01-23 19:00:00' and to_char(h323_connect_time,'yyyy-mm-dd hh24:mi:ss')>='2003-01-24 09:00:00';
这样写会更好:insert into tele_success1 select * from tele_success where h323_connect_time>=to_date('2003-01-23 19:00:00','yyyy-mm-dd hh24:mi:ss') and h323_connect_time<=to_date('2003-01-24 09:00:00','yyyy-mm-dd hh24:mi:ss');
SQL> desc tele_success1; 名称 空? 类型 ----------------------------------------- -------- ----------------- LOG_ID NOT NULL NUMBER NAS_IP_ADDRESS VARCHAR2(15) CISCO_NAS_PORT NUMBER CALLED_STATION_ID VARCHAR2(32) CALLING_STATION_ID VARCHAR2(32) ACCT_INPUT_OCTET NUMBER ACCT_OUTPUT_OCTET NUMBER ACCT_SESSION_TIME NUMBER ACCT_SESSION_TIME_MINS NUMBER H323_REMOTE_ADDRESS VARCHAR2(15) H323_GW_ID VARCHAR2(32) H323_SETUP_TIME DATE H323_CONNECT_TIME DATE H323_DISCONNECT_TIME DATE H323_DISCONNECT_CAUSE VARCHAR2(2)SQL> desc tele_success; 名称 空? 类型 ----------------------------------------- -------- ----------------- LOG_ID NOT NULL NUMBER NAS_IP_ADDRESS VARCHAR2(15) CISCO_NAS_PORT NUMBER CALLED_STATION_ID VARCHAR2(32) CALLING_STATION_ID VARCHAR2(32) ACCT_INPUT_OCTET NUMBER ACCT_OUTPUT_OCTET NUMBER ACCT_SESSION_TIME NUMBER H323_REMOTE_ADDRESS VARCHAR2(15) H323_GW_ID VARCHAR2(32) H323_SETUP_TIME DATE H323_CONNECT_TIME DATE H323_DISCONNECT_TIME DATE H323_DISCONNECT_CAUSE VARCHAR2(2) ACCT_SESSION_TIME_MINS NUMBER、 这是我的两个表的数据结构 提示出错:输入值对于日期格式不够长。
这样吧, drop table tele_success1; create table tele_success1 as select * from tele_success where h323_connect_time>=to_date('2003-01-23 19:00:00','yyyy-mm-dd hh24:mi:ss') and h323_connect_time<=to_date('2003-01-24 09:00:00','yyyy-mm-dd hh24:mi:ss');
如果表结构一样:insert into table1 select * from table2 where ...; 不一样时:insert into table1(field1,...) select (field1,... ) from table2 where ...
cut the "as"
(
select * from tele_success where to_char(h323_connect_time,'yyyy-mm-dd hh24:mi:ss')>='2003-01-23 19:00:00' and to_char(h323_connect_time,'yyyy-mm-dd hh24:mi:ss')>='2003-01-24 09:00:00'
);
to_char(h323_connect_time,'yyyy-mm-dd hh24:mi:ss')>='2003-01-23 19:00:00' and to_char(h323_connect_time,'yyyy-mm-dd hh24:mi:ss')>='2003-01-24 09:00:00'
是不是有问题?
这个语句就出错,有问题吗?我看不出来问题在哪里?
insert into tele_success1 select * from tele_success where to_char(h323_connect_time,'yyyy-mm-dd hh24:mi:ss')>='2003-01-23 19:00:00' and to_char(h323_connect_time,'yyyy-mm-dd hh24:mi:ss')>='2003-01-24 09:00:00';
名称 空? 类型
----------------------------------------- -------- -----------------
LOG_ID NOT NULL NUMBER
NAS_IP_ADDRESS VARCHAR2(15)
CISCO_NAS_PORT NUMBER
CALLED_STATION_ID VARCHAR2(32)
CALLING_STATION_ID VARCHAR2(32)
ACCT_INPUT_OCTET NUMBER
ACCT_OUTPUT_OCTET NUMBER
ACCT_SESSION_TIME NUMBER
ACCT_SESSION_TIME_MINS NUMBER
H323_REMOTE_ADDRESS VARCHAR2(15)
H323_GW_ID VARCHAR2(32)
H323_SETUP_TIME DATE
H323_CONNECT_TIME DATE
H323_DISCONNECT_TIME DATE
H323_DISCONNECT_CAUSE VARCHAR2(2)SQL> desc tele_success;
名称 空? 类型
----------------------------------------- -------- -----------------
LOG_ID NOT NULL NUMBER
NAS_IP_ADDRESS VARCHAR2(15)
CISCO_NAS_PORT NUMBER
CALLED_STATION_ID VARCHAR2(32)
CALLING_STATION_ID VARCHAR2(32)
ACCT_INPUT_OCTET NUMBER
ACCT_OUTPUT_OCTET NUMBER
ACCT_SESSION_TIME NUMBER
H323_REMOTE_ADDRESS VARCHAR2(15)
H323_GW_ID VARCHAR2(32)
H323_SETUP_TIME DATE
H323_CONNECT_TIME DATE
H323_DISCONNECT_TIME DATE
H323_DISCONNECT_CAUSE VARCHAR2(2)
ACCT_SESSION_TIME_MINS NUMBER、
这是我的两个表的数据结构
提示出错:输入值对于日期格式不够长。
???ACCT_SESSION_TIME_MINS NUMBER‘
用insert into tabname select *
好像要表結構一樣吧。??
少了一個val呀。
關注,共同學習。
drop table tele_success1;
create table tele_success1 as
select * from tele_success where h323_connect_time>=to_date('2003-01-23 19:00:00','yyyy-mm-dd hh24:mi:ss') and h323_connect_time<=to_date('2003-01-24 09:00:00','yyyy-mm-dd hh24:mi:ss');
不一样时:insert into table1(field1,...) select (field1,... ) from table2 where ...
tele_success1
ACCT_SESSION_TIME_MINS NUMBER
对应的
tele_success 顺序是
H323_REMOTE_ADDRESS VARCHAR2(15)
所以会出错。
解决办法,在insert语句中按照tele_success desc字段的顺序指定字段名