#sql #oracle #datetime #compare
#sql #Oracle #дата и время #Сравнить
Вопрос:
Я хочу проверить, что в столбце creation_date
есть дата и время. Я хочу сделать запрос, который извлекает данные до 4:00 вечера и после 8:00 утра в запросе oracle sql.
Дата создания имеет такие даты, как 12/03/2020 08:02:00 AM
, 12/05/2020 08:02:00 PM
SELECT *
FROM t1 IH
WHERE
to_char(IH.CREATION_DATE,'HH:MI:SS PM')>to_char('04:00:00 PM')
Ответ №1:
Вы можете использовать вычисление date
и выборку hours
следующим образом:
select *
from your_table
where creation_date - trunc(creation date)* 24 between 8 and 16;
Ответ №2:
Если вы хотите проверить время в Oracle, вы можете преобразовать в строку и сравнить:
select *
from t1
where to_char(creation_date, 'HH24:MI') >= '08:00' and
to_char(creation_date, 'HH24:MI') < '16:00';
Oracle не поддерживает time
тип данных, поэтому строки удобны.
Другой метод, который работает, потому что вы заботитесь о полных часах, — это:
where extract(hour from creation_date) between 8 and 15
Предполагается, что creation_date
это временная метка. Или вам нужно его преобразовать:
where extract(hour from cast(creation_date as timestamp)) between 8 and 15
Комментарии:
1. В Oracle недопустимо извлекать часы. dbfiddle.uk /…
2. @Popeye .
extract(hour)
, , работает, но предполагается, что значение равно atimestamp
, а не adate
. Я обновил ответ.