0

人の生年月日が現在の日付よりも短くなければならないことを確認したいと思います。だから私はテーブルで宣言しました:

    staff_dob SMALLDATETIME NOT NULL CHECK (GETDATE() < staff_dob)

しかし、チェック制約との競合が続くと。これを修正するにはどうすればよいですか?GETDATE()を使用する適切な形式にフォーマットする必要がありますか?どうすればいいのかわからない。

4

2 に答える 2

1

このコードを試してください:

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')

あなたの小切手の比較は間違った方向にあったと思います。

于 2012-05-29T03:47:24.587 に答える
1

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

お役に立てれば

于 2012-05-29T04:06:54.910 に答える