此请求按预期工作:
select dit_in.id data_item_in, dit_out.id data_item_out, alg.id algo_id
from algorithm_run arun
join algorithm_run_of arof on
arof.algorithm_run_id = arun.id
join algorithm_run_input arin on
arin.algorithm_run_id = arun.id
join data_item dit_in on
dit_in.id = arin.data_item_id
join algorithm alg on
alg.id = arof.algorithm_id
join algorithm_run_output arout on
arout.algorithm_run_id = arun.id
join data_item dit_out on
dit_out.id = arout.data_item_id
where alg.id in (182,183,143,162,125,222)
不幸的是,当我在最后添加时出现错误:
and arun.start_time >= to_date(’01/jun/2011’,’dd/mm/yyyy’)
and arun.start_time < to_date(’01/jul/2011’,’dd/mm/yyyy')
我正在使用网络界面,错误信息是:
警告:oci_execute()[function.oci-execute]:ORA-00911:第117行/opt/csw/apache2/share/htdocs/DAE/sites/default/modules/data_repository/data_repository.inc中的无效字符
警告:oci_fetch_row()[function.oci-fetch-row]:ORA-24374:在获取或执行之前定义未完成并在/ opt / csw / apache2 / share / htdocs / DAE / sites / default / modules中获取第852行的/daedatabase/daedatabase_db.inc。
答案 0 :(得分:5)
试试这个:
and arun.start_time >= to_date(’01/06/2011’,’dd/mm/yyyy’)
and arun.start_time < to_date(’01/07/2011’,’dd/mm/yyyy’)
或
and arun.start_time >= to_date(’01/jun/2011’,’dd/mon/yyyy’)
and arun.start_time < to_date(’01/jul/2011’,’dd/mon/yyyy’)
问题是你的日期字符串(01 / jun / 2011)与格式说明符(dd / mm / yyyy)不匹配。您需要更改日期或说明符,如上例所示。
答案 1 :(得分:5)
and arun.start_time < to_date(’01/jul/2011’,’dd/mm/yyyy')
我是否在最后一位看到两种不同类型的引号字符?单引号和反引号?或者这只是剪切/粘贴或翻译问题?
答案 2 :(得分:2)
作为Phil points out,您的字符串包含在两个不同的引号中。看起来你主要使用来自文字处理器的花哨引号。这是一个问题,因为Oracle期望纯ASCII撇号(ASCII 39)。
这肯定会解释为什么你会收到ORA-00911错误。
要解决此问题,您只需将所有’
替换为'
。
为了避免将来使用,您应该在编写代码时使用文本编辑器或IDE。