Команда ORA 00933 sql неправильно завершена - PullRequest
0 голосов
/ 07 февраля 2019

Я написал этот блок кода

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

Order - это столбец, который я пытаюсь извлечь максимум каждые 30 секунд из таблицы orders_table.Я нашел последнюю строчку кода здесь в ответе на программу, написанную кем-то еще.Тем не менее, я получаю сообщение об ошибке при попытке запустить этот код.

Заранее спасибо

1 Ответ

0 голосов
/ 07 февраля 2019

Ваш запрос использует синтаксис MySQL.На сервере Oracle не существует ни DIV, ни UNIX_TIMESTAMP.

Чтобы сделать целочисленное деление, вы можете просто TRUNC результаты деления.

Чтобы вычислить количество секунд с 1 января 1970 года, вы можете использовать следующее выражение (поскольку 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 )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...