2012-05-29 4 views
0

Je souhaite m'assurer que la date de naissance d'une personne doit être inférieure à la date actuelle. Je déclare dans un tableau:Utilisation d'une contrainte de vérification sur une date

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

Mais quand je continue à avoir des conflits avec la contrainte de vérification. Comment puis-je réparer ça? Ai-je besoin de formater GETDATE() dans un format approprié que j'utilise? Je ne suis pas sûr de savoir comment le faire.

Répondre

1

Essayez ce code:

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

Je pense que votre comparaison de contrôle était dans la mauvaise direction.

+0

travail Nope..didn't – nfnmy

+0

Est-ce comment devrait être comme l'entrée de la date? J'ai essayé 12-DEC-1988 par exemple, et sa ne fonctionne pas même – nfnmy

+0

Ceci est tout le script: test de chute de table create table test (staff_dob check datetime (de staff_dob

1

un coup d'oeil à 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 

this helps

Questions connexes