Проверьте ограничение для столбца в SQL Developer

Мне нужно создать таблицу, где значения столбца "ttime"может быть в пределах диапазона 10:00 а также 22:00, Вот код:

create table test (    
  ttime date,
  CONSTRAINT CHECK_ttime CHECK(ttime >= TO_DATE('10:00', 'HH24:MI') AND
                               ttime <= TO_DATE('22:00', 'HH24:MI'))
);

Но когда я создаю эту таблицу, возникает ошибка:

ORA-02436: дата или системная переменная неправильно указаны в ограничении CHECK

Как я могу избежать этого? В чем проблема?

1 ответ

Чтобы применить такое ограничение, вам нужно извлечь время из ttime колонка. Когда вы конвертируете часть времени даты (представленной здесь как строковый литерал '10:00') до значения DATE тип данных дата часть по умолчанию принимает первый день текущего месяца и года, таким образом TO_DATE('10:00', 'HH24:MI') приведет к 01/05/2017 10:00:00 и ваше состояние становится

ttime >= 01/05/2017 10:00:00 and  ttime <= 01/05/2017 22:00:00 

Замечания: AND должен быть заменен OR, ttime не может быть меньше некоторого значения и в то же время быть больше того же значения.

Сказав это, как один из вариантов, вы можете определить свои ограничения следующим образом:

constraint t1_chk01 check (to_number(to_char(c1, 'HH24MI')) 
                           between 1000 and 2200)
Другие вопросы по тегам