首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误Oracle查询ORA-00905

错误Oracle查询ORA-00905
EN

Stack Overflow用户
提问于 2017-07-31 20:09:22
回答 1查看 189关注 0票数 1

我有这样的疑问

代码语言:javascript
复制
SELECT to_char(trunc(fecha,'HH')+(30*round(to_char( trunc(fecha,'MI'),'MI')/30))/1440,'DD/MM/YYYY hh24:mi:ss') AS fecha
     , SUM(total) AS total 
FROM (SELECT  FECHA_CREACION AS FECHA, Count(FECHA_CREACION) AS TOTAL
      FROM ROBOT_CONTEO_CONSULTA
      GROUP BY FECHA_CREACION)
WHERE fecha BETWEEN :fechaDesde AND :fechaHasta  
GROUP BY to_char(trunc(fecha,'HH')+(30*round(to_char( trunc(fecha,'MI'),'MI')/30))/1440,'DD/MM/YYYY hh24:mi:ss') 
ORDER BY fecha ASC;

但它给了我这个:

错误信息: ORA-00905:缺失关键字

但是,当我做这样的事

代码语言:javascript
复制
WHERE fecha BETWEEN CURRENT_DATE-20 AND CURRENT_DATE

确实有用。怎么啦?

我需要它的参数,因为我将创建一个视图。

完全错误:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-31 22:20:31

我想你把两件事混在一起了。当前从java应用程序调用的查询和要创建的视图。

在提供的查询中,确实需要这2个变量,您将在应用程序中绑定这两个变量,比如query.setParameter("fechaDesde", myStartDate);

但是,您不需要将这些参数放在视图中,只需尝试以下操作:

代码语言:javascript
复制
CREATE OR REPLACE VIEW MY_TEST_VIEW AS
SELECT to_char(trunc(fecha,'HH')+(30*round(to_char( trunc(fecha,'MI'),'MI')/30))/1440,'DD/MM/YYYY hh24:mi:ss') AS fecha
     , SUM(total) AS total 
FROM (SELECT  FECHA_CREACION AS FECHA, Count(FECHA_CREACION) AS TOTAL
      FROM ROBOT_CONTEO_CONSULTA
      GROUP BY FECHA_CREACION)
GROUP BY to_char(trunc(fecha,'HH')+(30*round(to_char( trunc(fecha,'MI'),'MI')/30))/1440,'DD/MM/YYYY hh24:mi:ss') 
ORDER BY fecha ASC;

然后,在java代码中,您将得到以下内容

代码语言:javascript
复制
Query query = session.createQuery("FROM MY_TEST_VIEW WHERE FETCHA BETWEEN :fechaDesde AND :fechaHasta");
query.setParameter("fechaDesde ", myStartDateVar);
query.setParameter("fechaHasta", myEndDateVar);

编辑:小心点,您的fecha字段是VARCHAR2,而不是日期。如果尝试做中间操作,您可能会有奇怪的行为,因为Oracle将测试所提供的字符串是否介于其他两个varchars之间,并且会得到奇怪的结果。它应该是一个正常工作的日期。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45424479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档