Oracle 如何将日期的日期和月份限制为两个不同日期之一?

Oracle 如何将日期的日期和月份限制为两个不同日期之一?,oracle,date,constraints,ddl,Oracle,Date,Constraints,Ddl,如何检查输入的日期是否为两个选项之一 我正在尝试创建一个带有注册日期('DD.MM.YYYY')的表,并且该注册只能在4月1日或10月1日进行。 我一直在尝试不同的方法,但都无法成功 CREATE TABLE student ( student_id CHAR(10), enrollment_date DATE CHECK (enrollment_date = TO_DATE('01.04','DD.MM') OR enrollment_date = TO_DATE('01.10','D

如何检查输入的日期是否为两个选项之一

我正在尝试创建一个带有注册日期('DD.MM.YYYY')的表,并且该注册只能在4月1日或10月1日进行。 我一直在尝试不同的方法,但都无法成功

CREATE TABLE student
(
  student_id CHAR(10),
  enrollment_date DATE CHECK (enrollment_date = TO_DATE('01.04','DD.MM') OR enrollment_date = TO_DATE('01.10','DD.MM'))
);

在这两种情况下,我都得到:

ORA-02436:检查中错误指定的日期或系统变量 约束02436。00000-“日期或系统变量指定错误” 在检查约束“*原因:试图使用日期 检查约束中的常量或系统变量,如用户 未在创建表或ALTER表中完全指定 陈述例如,指定的日期没有世纪。 *操作:完全指定日期常量或系统变量。设置事件10149允许像“a1>1996年5月10日”这样的约束, 这是允许在版本8之前创建的错误


请尝试在(4,10)中使用
EXTRACT(DAY FROM enrollment_date)=1和EXTRACT(MONTH FROM enrollment_date)
,或者您也可以尝试在('01.04','01.10')中使用
to_char(enrollment_date,'dd.mm')
。谢谢您的回答,这两种方法都有效,也谢谢您的编辑,这是我的第一个问题,我不确定如何编写所有内容,实际上我刚刚意识到我写了两次相同的代码。
CREATE TABLE student (
  student_id CHAR(10),
  enrollment_date DATE CHECK (enrollment_date = TO_DATE('01.04','DD.MM') OR enrollment_date = TO_DATE('01.10','DD.MM'))
);