[英]Operand type clash: date is incompatible with smallint
I want to create this table in SQL Server But it show date is incompatible with smallint error.我想在 SQL Server 中创建此表但它显示日期与 smallint 错误不兼容。
CREATE TABLE Trainees
(
traineeID NCHAR(6) NOT NULL
CHECK (traineeID LIKE '[0-9][0-9][0-9][0-9][0-9][0-9]') PRIMARY KEY,
traineeName NVARCHAR (60) NOT NULL,
traineeDOB DATE NOT NULL
CHECK (YEAR (traineeDOB) >=1991 AND NOT (traineeDOB) <=2002),
graduationYear DATE NOT NULL
CHECK (YEAR (graduationYear) >=2010 AND NOT (graduationYear) >=2021),
Email NVARCHAR (50) NOT NULL UNIQUE,
Phone NCHAR(11) NOT NULL
CHECK (traineeID LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'),
enrolledCourse INT REFERENCES Course (courseId) NOT NULL
)
GO
In your CHECK restrictions you are comparing a DATE with a smallint (traineeDOB) <=2002
and (graduationYear) >=2021
.在您的 CHECK 限制中,您将 DATE 与 smallint (traineeDOB) <=2002
和(graduationYear) >=2021
。 You should compare with a YEAR (smallint) with smallint, not DATE:您应该将 YEAR (smallint) 与 smallint 进行比较,而不是 DATE:
CREATE TABLE Trainees
(
traineeID NCHAR(6) NOT NULL
CHECK (traineeID LIKE '[0-9][0-9][0-9][0-9][0-9][0-9]') PRIMARY KEY,
traineeName NVARCHAR (60) NOT NULL,
traineeDOB DATE NOT NULL
CHECK (YEAR(traineeDOB) >=1991 AND NOT YEAR(traineeDOB) <=2002),
graduationYear DATE NOT NULL
CHECK (YEAR(graduationYear) >=2010 AND NOT YEAR(graduationYear) >=2021),
Email NVARCHAR (50) NOT NULL UNIQUE,
Phone NCHAR(11) NOT NULL
CHECK (traineeID LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'),
enrolledCourse INT REFERENCES Course (courseId) NOT NULL
)
GO
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.