【问题标题】:Keep getting ORA-00933: SQL command not properly ended不断收到 ORA-00933: SQL 命令未正确结束
【发布时间】:2016-06-18 07:46:18
【问题描述】:

我现在正在尝试修复此查询一段时间,但我不断收到错误:

ORA-00933:SQL 命令未正确结束

关于我可能做错的任何提示。

SELECT ACTIVITY_APPROVAL_DATE, COUNT(*)AS ACTIVITY_COUNT 
FROM ACTIVITY 
WHERE ACTIVITY_APPROVAL_DATE = CURRENT_DATE() 
GROUP BY ACTIVITY_APPROVAL_DATE;

【问题讨论】:

标签: sql oracle


【解决方案1】:

CURRENT_DATE() 中删除()

SELECT ACTIVITY_APPROVAL_DATE, COUNT(*)AS ACTIVITY_COUNT 
FROM ACTIVITY 
WHERE ACTIVITY_APPROVAL_DATE = CURRENT_DATE
GROUP BY ACTIVITY_APPROVAL_DATE;

【讨论】:

    【解决方案2】:

    如果这是 Oracle,则使用 sysdate:

    SELECT ACTIVITY_APPROVAL_DATE, COUNT(*)AS ACTIVITY_COUNT 
    FROM ACTIVITY 
    WHERE ACTIVITY_APPROVAL_DATE = TRUNC(sysdate) 
    GROUP BY ACTIVITY_APPROVAL_DATE;
    

    如果ACTIVITY_APPROVAL_DATE 有时间组件,那么您需要考虑到这一点:

    SELECT ACTIVITY_APPROVAL_DATE, COUNT(*)AS ACTIVITY_COUNT 
    FROM ACTIVITY 
    WHERE ACTIVITY_APPROVAL_DATE >= TRUNC(sysdate) AND
          ACTIVITY_APPROVAL_DATE < TRUNC(sysdate + 1)
    GROUP BY ACTIVITY_APPROVAL_DATE;
    

    【讨论】:

    • 您可以在 Oracle 中使用current_date(我很确定您知道!);但是使用哪个取决于 OP 是指系统时间还是会话时间,如果它们位于不同的时区。当然,trunc/range 更改适用于任何一种方式。
    猜你喜欢
    • 1970-01-01
    • 2017-03-12
    • 2010-09-09
    • 2010-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多