Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle10g ORA-01841:需要将转换的字符串与sysdate进行比较_Oracle10g - Fatal编程技术网

Oracle10g ORA-01841:需要将转换的字符串与sysdate进行比较

Oracle10g ORA-01841:需要将转换的字符串与sysdate进行比较,oracle10g,Oracle10g,这是我正在使用的查询 select * from ( select table_name, to_number(to_char(trunc(to_date(substr(table_name,instr(table_name,'_',-1,2)+1,8),'yyyymmdd')),'J')) as t_date, to_number(to_char(trunc(sysdate),'J')) as s_date from user_tables where table_name like '

这是我正在使用的查询

select * from (
select table_name, to_number(to_char(trunc(to_date(substr(table_name,instr(table_name,'_',-1,2)+1,8),'yyyymmdd')),'J')) as t_date, to_number(to_char(trunc(sysdate),'J')) as s_date
  from user_tables
 where table_name like 'WORLD_RI%' and table_name not like 'WORLD_RI_ERROR%' )
where t_date < s_date;
我明白了

ORA-01841:全年必须介于-4713和+9999之间,而不是0

包含最后一个where子句时出错,其中t_date
任何帮助或建议都将不胜感激

我建议只运行这个部分

select table_name
, substr(table_name,instr(table_name,'_',-1,2)+1,8) as t_date
from user_tables
where table_name like 'WORLD_RI%' 
and table_name not like 'WORLD_RI_ERROR%'
select table_name
, to_date(substr(table_name,instr(table_name,'_',-1,2)+1,8),'yyyymmdd')   
from user_tables
where table_name like 'WORLD_RI%' 
and table_name not like 'WORLD_RI_ERROR%'
然后手动检查数据中的奇数值

编辑:

如果那部分有效,那么试试这个部分

select table_name
, substr(table_name,instr(table_name,'_',-1,2)+1,8) as t_date
from user_tables
where table_name like 'WORLD_RI%' 
and table_name not like 'WORLD_RI_ERROR%'
select table_name
, to_date(substr(table_name,instr(table_name,'_',-1,2)+1,8),'yyyymmdd')   
from user_tables
where table_name like 'WORLD_RI%' 
and table_name not like 'WORLD_RI_ERROR%'
我想我明白了

这段代码很有魅力。在日期字符串上添加一个翻译就成功了! 谢谢你的帮助

select * from (
select table_name , to_date(substr(table_name,instr(table_name,'_',-1,2)+1,8),'yyyymmdd') as T_DATE , trunc(sysdate) s_date
  from user_tables
 where table_name like 'WORLD_RI%' and table_name not like 'WORLD_RI_ERROR%'
   and translate(substr(table_name,instr(table_name,'_',-1,2)+1,8),'0123456789','$$$$$$$$$$') = '$$$$$$$$'
) where T_DATE < s_date ;

谢谢你,兰迪!只有104个表,我对每个表都进行了检查,我确信没有任何奇数值会违反数据类型转换。@dudisaha,您是否按照Randy的建议运行查询进行了检查?我已经尝试了这些排列和组合。这意味着您的表名中确实有奇怪的值,根据Randy的建议,您应该找到它们