我想确保一个人的出生日期必须小于当前日期。所以我在表格中声明:
staff_dob SMALLDATETIME NOT NULL CHECK (GETDATE() < staff_dob)
但是当我不断与检查约束发生冲突时。我该如何解决?我是否需要将 GETDATE() 格式化为我使用的正确格式?我不确定该怎么做。
我想确保一个人的出生日期必须小于当前日期。所以我在表格中声明:
staff_dob SMALLDATETIME NOT NULL CHECK (GETDATE() < staff_dob)
但是当我不断与检查约束发生冲突时。我该如何解决?我是否需要将 GETDATE() 格式化为我使用的正确格式?我不确定该怎么做。
试试这个代码:
drop table test
create table test
(staff_dob datetime check (staff_dob < getdate()))
--this insert will fail
insert test
(staff_dob)
values
('1/1/2013')
--this insert will succeed
insert test
(staff_dob)
values
('1/1/2011')
我认为您的支票比较方向错误。
CREATE TABLE [dbo].[Staff](
[staffid] [int] NULL,
[dob] [date] NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Staff] WITH CHECK ADD CONSTRAINT [CK_Staff] CHECK (([dob]<getdate()))
GO
ALTER TABLE [dbo].[Staff] CHECK CONSTRAINT [CK_Staff]
GO
希望这可以帮助