Почему Windows Server 2003 вызывает «varchar to datetime вне диапазона», тогда как Server 2008 не делает - PullRequest
0 голосов
/ 24 февраля 2011

Я написал небольшое приложение Asp.net с использованием Entity Framework.

Хранимая процедура принимает следующее: employeeID int, startDate varchar (12), endDate varchar (12)

Iзатем используйте SQL-сервер для преобразования коротких строк даты в DateTime.

SET @correctStartDate = CONVERT(DATETIME,(convert(varchar(10),@startDate,103) + ' 00:00:00am'), 103)
SET @correctEndDate = CONVERT(DATETIME,(convert(varchar(10),@endDate,103) + ' 11:59:59pm'), 103)

В среде разработки iis7 Windows Server 2008 с SQL Server 2008 R2 проблем нет.

Если мы развернем в производствоНа сервере iis6 (Windows Server 2003 SP2 с SQL Server 2008 R2) мы получаем:

"Преобразование типа данных varchar в тип данных datetime привело к значению, выходящему за пределы допустимого диапазона. Преобразование varcharтип данных для типа данных datetime привел к значению вне допустимого диапазона. "

Почему это так?Оба имеют одинаковые региональные настройки.

Ответы [ 2 ]

0 голосов
/ 26 февраля 2011

Проблема заключалась в том, что сказал Мартин.Языковые настройки имеют контекст входа в систему.

Чтобы решить эту проблему, я вставил datetime в хранимую процедуру вместо метода datetime.ToShortDateString ().

Вы также можете использовать myDatetime.ToString.( "дд / мм / гггг");

0 голосов
/ 24 февраля 2011

Каковы значения даты начала и окончания?

Попробуйте сделать то же самое, используя datetime2 вместо datetime.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...