SQL Server не распознает SYSDATE
, если это не столбец в вашей таблице.Вы можете попробовать это:
ALTER TABLE MEDICAL_CERTIFICATE ADD CONSTRAINT MC_CLASS1
CHECK (DATEDIFF(month, LAST_RENEWAL_DATE, GETDATE()) < 6 AND
CLASS IN (1, 2)
);
Обратите внимание, что я изменил логику для CLASS
.Это, вероятно, то, что вы намерены.Я предполагаю, CLASS
- это число, поэтому я удалил одинарные кавычки (вставьте их обратно, если это строка).
Возможно, вы не поймете, как работает DATEDIFF()
.Подсчитывает количество границ месяца между двумя датами.Итак, если сегодня какой-либо день июля, то это верно только для дней до февраля.
Если вы хотите шесть фактических месяцев, используйте сравнения дат:
ALTER TABLE MEDICAL_CERTIFICATE ADD CONSTRAINT MC_CLASS1
CHECK (LAST_RENEWAL_DATE < DATEADD(month, -6, GETDATE()) AND
CLASS IN (1, 2)
);