Проверьте ограничение для столбца в 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)