Вчера была странная проблема с приложением .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, когда в качестве значения параметра хранимой процедуры указана только короткая дата?
Заранее спасибо!