ORA-00936: отсутствует проблема с выражением - PullRequest
0 голосов
/ 06 апреля 2020

Я новичок в oracle sql и пытаюсь выполнить следующий запрос, но получаю вышеупомянутую ошибку.

SELECT CONVERT(DATETIME,CASE WHEN DATEPART (Hour,  OrderTime) < 5 
                    THEN DATEADD(Day, -1, CONVERT(date, ordertime))
                    ELSE CONVERT(date, ordertime)
                    END) AS ItemOrderTradingDate FROM TBL_ITEM

Пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 06 апреля 2020

Кажется, что вы хотите извлечь "час" из столбца даты. Если это так, просмотрите следующие две опции:

SQL> select ordertime,
  2         to_char(ordertime, 'hh24') hour_1,
  3         extract(hour from cast(ordertime as timestamp)) hour_2
  4  from tbl_item;

ORDERTIME           HOUR_1       HOUR_2
------------------- -------- ----------
06.04.2020 08:01:05 08                8

SQL>

Ошибка, возникшая при выполнении запроса Ankint, вызвана тем, что extract - для определенных значений (часы, минуты, секунды) работает на отметках времени, не даты .


Я не знаком с функциями, которые вы использовали (convert, datepart, dateadd), поэтому я не могу сказать, что вы на самом деле хочу сделать, когда вы найдете, какой час. dateadd похоже, что вы хотите добавить (или вычесть) 1 день из некоторого значения данных. Если это так, то просто сделайте это: арифметика даты c (по умолчанию) выполняется по дням в любом случае:

SQL> select sysdate right_now,
  2         sysdate + 1 tomorrow,
  3         sysdate - 1 yesterday
  4  from dual;

RIGHT_NOW           TOMORROW            YESTERDAY
------------------- ------------------- -------------------
06.04.2020 08:05:34 07.04.2020 08:05:34 05.04.2020 08:05:34

SQL>
0 голосов
/ 06 апреля 2020

Вы можете попробовать запрос ниже -

SELECT CASE WHEN EXTRACT(HOUR FROM OrderTime) < 5 
                 THEN TRUNC(ordertime) - 1
            ELSE TRUNC(ordertime)
       END AS ItemOrderTradingDate
FROM TBL_ITEM
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...