人の生年月日が現在の日付よりも短くなければならないことを確認したいと思います。だから私はテーブルで宣言しました:
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')
あなたの小切手の比較は間違った方向にあったと思います。
CHECK制約の作成と変更をご覧ください
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
お役に立てれば