我有这样的疑问
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:缺失关键字
但是,当我做这样的事
WHERE fecha BETWEEN CURRENT_DATE-20 AND CURRENT_DATE确实有用。怎么啦?
我需要它的参数,因为我将创建一个视图。
完全错误:

发布于 2017-07-31 22:20:31
我想你把两件事混在一起了。当前从java应用程序调用的查询和要创建的视图。
在提供的查询中,确实需要这2个变量,您将在应用程序中绑定这两个变量,比如query.setParameter("fechaDesde", myStartDate);。
但是,您不需要将这些参数放在视图中,只需尝试以下操作:
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代码中,您将得到以下内容
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之间,并且会得到奇怪的结果。它应该是一个正常工作的日期。
https://stackoverflow.com/questions/45424479
复制相似问题