Sql 选中约束以将注册日期限制为2005年8月26日之后的日期

Sql 选中约束以将注册日期限制为2005年8月26日之后的日期,sql,date,datetime,Sql,Date,Datetime,在这方面需要一些帮助: 创建一个名为TEMP_STUDENT的表,其中包含以下列和 约束:学生ID的列STUD_ID,是主要的 键,学生名的列名,列姓 对于学生姓氏,一个列ZIP,它是ZIP的外键 列,以及 列注册日期不为NULL且具有检查约束 将注册日期限制在2005年8月26日之后。全部的 必须命名约束。“名字”和“姓氏”列 是必需的 我明白了: CREATE TABLE Temp_Student (STUD_ID NUMBER (8,0), FIRST_NAME VARCHAR2(25)

在这方面需要一些帮助:

创建一个名为TEMP_STUDENT的表,其中包含以下列和 约束:学生ID的列STUD_ID,是主要的 键,学生名的列名,列姓 对于学生姓氏,一个列ZIP,它是ZIP的外键 列,以及 列注册日期不为NULL且具有检查约束 将注册日期限制在2005年8月26日之后。全部的 必须命名约束。“名字”和“姓氏”列 是必需的

我明白了:

CREATE TABLE Temp_Student
(STUD_ID NUMBER (8,0),
FIRST_NAME VARCHAR2(25) NOT NULL,
LAST_NAME VARCHAR2(25) NOT NULL,
ZIP VARCHAR2(5),
REGISTRATION_DATE DATE NOT NULL,
CONSTRAINT STUD_ID_PK PRIMARY KEY(STUD_ID),
CONSTRAINT ZIP_FK FOREIGN KEY (ZIP)
REFERENCES ZIPCODE (ZIP),
CONSTRAINT chk_REGISTRATION_DATE CHECK (REGISTRATION_DATE> REGISTRATION_DATE 'TO DATE('26-AUGUST-2005'))
);
如果您能帮我解决最后一个问题,我将不胜感激。我不知道我在做什么

继续获得此消息:

CONSTRAINT chk_REGISTRATION_DATE CHECK (REGISTRATION_DATE> REGISTRATION_DATE 'TO DATE('26-AUGUST-2005')')
                                                                             *
ERROR at line 10: 
ORA-00907: missing right parenthesis 

表达式中有几个错误:

是截止日期,不是截止日期请注意下划线 函数调用不能放在单引号中,因此它是to_date..,而不是“to_date…” 您在>运算符之后重复了该列,这也是错误的。 所以正确的表达是:

CONSTRAINT chk_REGISTRATION_DATE 
   CHECK (REGISTRATION_DATE > TO_DATE('2005-08-26', 'yyyy-mm-dd'))
请注意,使用to_date时应始终指定格式,否则转换将受服务器和客户端的NLS设置的影响,可能会产生奇怪的错误

即使使用格式掩码,也不应使用依赖于当前NLS语言的文本。月份名称可能不适用于所有语言。最好使用月数。

试试这个

CREATE TABLE Temp_Student
(STUD_ID NUMBER (8,0),
FIRST_NAME VARCHAR2(25) NOT NULL,
LAST_NAME VARCHAR2(25) NOT NULL,
ZIP VARCHAR2(5),
REGISTRATION_DATE DATE NOT NULL,
CONSTRAINT STUD_ID_PK PRIMARY KEY(STUD_ID),
CONSTRAINT ZIP_FK FOREIGN KEY (ZIP)
REFERENCES ZIPCODE (ZIP),
CONSTRAINT chk_REGISTRATION_DATE CHECK (REGISTRATION_DATE> TO_DATE('26-AUGUST-2005'))
)

语法突出显示给出了错误:一个错位的'被解释为字符串文字。