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