Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Проблема с Check  [new]
spectatorpiter
Member

Откуда: Санкт-Петербург
Сообщений: 20
В таблице имеет поле с типом Date, на которое задано ограничение


ALTER TABLE [DB].[Table]  WITH NOCHECK ADD  CONSTRAINT [CK_Table_StartDate] CHECK  (([StartDate]>=getdate()))
GO

ALTER TABLE [DB].[Table] CHECK CONSTRAINT [CK_Table_StartDate]
GO


При таком ограничении при вставке текущей даты срабатывает исключение с ссылкой на данное ограничение.

Getdate() возвращает корректные дату и время.

По условию StartDate должно быть равно текущей дате или будущей дате.


Подскажите в чем может быть проблема.
5 мар 13, 08:48    [14011895]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с Check  [new]
SIMPLicity_
Member

Откуда: (((@)))
Сообщений: 8877
Вы в Стартэйт пишете ТОЛЬКО ДАТУ... А ГетДэйт возвращает текущие Дата+Время в паре.

Похоже?
Т.е. '20130305' явно меньше '20120305 09:00:00.000' (хотя, строго говоря, ДАТА, именно дата!, одна и та же)... ;-)
5 мар 13, 09:01    [14011950]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с Check  [new]
spectatorpiter
Member

Откуда: Санкт-Петербург
Сообщений: 20
К сожалению, Вы правы.

При сравнении в данных в столбце с значением getdate(), неявное преобразование не преобразует значение getdate() в тип Date, а преобразует значение столбца в тип Datetime, что естественно дает ошибку.
5 мар 13, 09:34    [14012132]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить