2016-08-08 5 views
0

Я пытаюсь вставить ограничение в таблицу, чтобы проверить, меньше ли дата заказа, чем дата изготовления продукта, когда данные вставляются в таблицу. Но заявление вызывает ошибку.Ограничение SQL Server 2012 для проверки дат

Может кто-нибудь, пожалуйста, помогите мне?

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

Ошибка:

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

Я пытался использовать функцию datediff(). Но я тоже получаю ошибку.

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

Ошибка:

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

ответ

1

Вы должны круглые скобки вокруг условия для более check ограничения:

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

Примечание: datediff() логика отличается от логики сравнения. datediff(year) подсчитывает количество границ года между двумя датами. , , поэтому 2015-12-31 и 2016-01-01 разделяются на один год, тогда как 2016-01-01 и 2016-12-31 - на расстоянии в 0 лет.

Смежные вопросы