Проверьте ограничение, используя datediff - PullRequest
0 голосов
/ 08 сентября 2018

новичок в SQL

У меня проблема с тем, что я пытаюсь реализовать ограничение, которое проверяет два поля даты в моей таблице. Ограничение должно гарантировать, что разница в датах превышает 7 дней и менее 3 месяцев.

Это то, что я пытался, но, похоже, это не сработало.

ALTER TABLE [dbo].[SA_Rental]  WITH CHECK ADD  CONSTRAINT 
[CHK_RentalDuration] CHECK  ((datediff(day,[DateRenting],            
[DateReturning])>(7)))
GO

ALTER TABLE [dbo].[SA_Rental]  WITH CHECK ADD  CONSTRAINT     
[CHK_RentalDuration1] CHECK  ((datediff(month,[DateRenting], 
[DateReturning])<(3)))
GO

ALTER TABLE [dbo].[SA_Rental] CHECK CONSTRAINT [CHK_RentalDuration]
GO

Буду очень признателен за любые идеи о том, где я ошибся, или за любые предложения.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 08 сентября 2018

спасибо за ваши ответы. После тщательного изучения я понял, что это работает, но просто не делал то, что хотел, поэтому подумал, что это не работает. Я просто в основном изменил его с «<7» на «<= 7» и то же самое для месяцев. </p>

Спасибо за ваши ответы, парни, спасибо.

0 голосов
/ 08 сентября 2018

Попробуйте добавить один чек с двумя ограничениями даты:

ALTER TABLE [dbo].[SA_Rental] WITH CHECK
ADD CONSTRAINT [CHK_RentalDuration]
CHECK (DATEDIFF(day, [DateRenting], [DateReturning]) > 7 AND
       DATEDIFF(month, [DateRenting], [DateReturning]) < 3);
...