2016-08-08 58 views
0

Ich versuche, eine Einschränkung in eine Tabelle einzufügen, um zu überprüfen, ob das Bestelldatum kleiner als das Herstellungsdatum des Produkts ist, wenn Daten in die Tabelle eingefügt werden. Aber die Aussage wirft einen Fehler auf.SQL Server 2012-Einschränkung zum Überprüfen von Daten

Kann mir bitte jemand helfen?

create table dateTime1 
(
    orderDate date, 
    mfd date, 
    constraint check_date check orderDate < mfd 
); 

Fehler:

Msg 102, Level 15, State 1, Line 1
Incorrect syntax near 'orderdate'.

Ich habe versucht, die Funktion datediff() zu verwenden. Aber dafür bekomme ich auch den Fehler.

create table dateTime1 
(
    orderDate date, 
    mfd date, 
    check DATEDIFF(yy,orderDate,mfd) > 0 
); 

Fehler:

Msg 102, Level 15, State 1, Line 1
Incorrect syntax near 'DATEDIFF'.

Antwort

1

Sie müssen Klammern um die Bedingung für eine check Einschränkung:

create table dateTime1 (
    orderDate date, 
    mfd date, 
    constraint check_date check (orderDate < mfd) 
); 

Hinweis: Die datediff() Logik unterscheidet sich von der Vergleichslogik. datediff(year) zählt die Anzahl der Jahresgrenzen zwischen zwei Daten. . . So sind 2015-12-31 und 2016-01-01 ein Jahr auseinander, während 2016-01-01 und 2016-12-31 0 Jahre auseinander liegen.