2012-05-29 69 views
0

我想確保一個人的出生日期必須小於當前日期。 所以我在一個表中宣稱:在日期上使用檢查約束

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

但是,當我跟上了檢查約束越來越衝突。我該如何解決?我需要將GETDATE()合成爲我使用的正確格式嗎?我不確定如何去做。

回答

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

我認爲自己的支票比較是錯誤的方向。

+0

Nope..didn't工作 – nfnmy

+0

是它的日期輸入應該是怎麼樣的?我一直試圖12-DEC-1988年爲例子,它甚至沒有工作 – nfnmy

+0

這是整個腳本:DROP TABLE測試 創建表測試 (staff_dob日期時間檢查(staff_dob

1

看看Creating and Modifying CHECK Constraints

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 

希望這有助於