Я хочу проверить, что у элемента creation_date есть дата и время в нем в запросе oracle sql

#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) , , работает, но предполагается, что значение равно a timestamp , а не a date . Я обновил ответ.