ORA 00933 sql 命令未正确结束

Posted

技术标签:

【中文标题】ORA 00933 sql 命令未正确结束【英文标题】:ORA 00933 sql command not properly ended 【发布时间】:2019-02-07 15:28:03 【问题描述】:

我写了这段代码

SELECT max(order)
FROM orders_table
GROUP BY UNIX_TIMESTAMP(timestamp) DIV 30 ;

Order 是一个列,我试图从一个名为 orders_table 的表中获取每 30 秒的最大值。我在其他人的程序的答案中找到了最后一行代码。但是,当我尝试运行此代码时出现错误。

提前致谢

【问题讨论】:

Oracle中没有函数unix_timestamp() 也许这有助于***.com/questions/12105691/… 【参考方案1】:

您的查询使用 mysql 语法。在 Oracle 服务器中,DIVUNIX_TIMESTAMP 都不存在。

要进行整数除法,你可能只是TRUNC除法的结果。

要计算自 1970 年 1 月 1 日以来的秒数,您可以使用以下表达式(因为 Oracle 在减去日期时将结果返回为天数):

(date_column - TO_DATE('1970-01-01', 'yyyy-mm-dd')) * 60 *60 *24

你可能想要:

SELECT MAX(o.order)
FROM orders_table o
GROUP BY TRUNC(o.timestamp - TO_DATE('1970-01-01', 'yyyy-mm-dd')) / 30 )

【讨论】:

以上是关于ORA 00933 sql 命令未正确结束的主要内容,如果未能解决你的问题,请参考以下文章

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

为啥会出现“ORA-00933:SQL 命令未正确结束”错误(立即执行)?

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

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

选择进入导致错误 ORA-00933:SQL 命令未正确结束

ORA-00933: 运行创建序列命令时 SQL 命令未正确结束