SQL Server 2005 видит параметр DateTime sproc с 12:00 для времени, когда для параметра установлена ​​только короткая дата - PullRequest
1 голос
/ 23 августа 2011

Вчера была странная проблема с приложением .NET 3.5.

У нас есть веб-сервис, который вызывает хранимую процедуру для результатов поиска. Одним из параметров является дата. Значением параметра является короткая строка даты (M / d / yyyy, en-us), а ее тип - DbType.DateTime. Я использую DbProviderFactory для подключения к SQL Server 2005, поэтому тип параметра фактически становится SqlDbType.DateTime.

Обычно, когда я использую SQL Server Profiler для просмотра вызова, я вижу дату как «гггг-М-д 00:00:00». Но вчера я профилировался из-за некоторых проблем, о которых сообщалось, и дата появилась как «гггг-М-д 12: 00: 00: 000». По сути, все всегда работало так, как задумывалось, и затем, без изменений в моем коде, хранимая процедура показала 12:00 вечера.

Это также происходило на некоторых вставках и обновлениях, в результате чего 12 часов вечера сохранялись с некоторыми датами по умолчанию, а не 12:00, полночь.

Без обновления моего кода сегодня все хорошо.

Я вижу, что, когда DataAdapter заполняет мой DataTable, свойство CoercedValue устанавливается для параметра как "yyyy-M-d 12:00:00 AM", в то время как значение равно "M / d / yyyy".

Итак, мой вопрос:

Кто-нибудь знает достаточно о DataAdapter (DbDataAdapter или SqlDataAdapter), чтобы знать, почему он отправляет 12PM, когда в качестве значения параметра хранимой процедуры указана только короткая дата?

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

...