我需要创建一个表格,其中列的值为#34; 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中错误指定了日期或系统变量 约束
我该如何避免它?问题是什么?
答案 0 :(得分:3)
要强制执行此类约束,您需要从execute format(...
列中提取时间。将日期的时间部分(在此处表示为字符串文字ttime
)转换为值'10:00'
数据类型时,日期部分默认为当前月份和年份的第一天,因此{ {1}}将导致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