как получить полный SQL-запрос, включая параметры - PullRequest
0 голосов
/ 12 марта 2012

Недавно я перешел к параметризованным запросам в SQL. Сейчас я получаю жалобу о дате выполнения запроса

DateTime, представленный строкой, не поддерживается в календаре System.Globalization.GregorianCalendar.

Когда я получаю запрос, я получаю параметризованную строку запроса

SELECT * FROM Table WHERE field = @p_param

Что мне нужно для отладки, это

SELECT * FROM Table WHERE field = "2012-03-12 14:09:00"

Как же я могу это сделать? Я подозреваю, что это что-то простое, но я просто не вижу этого!

Параметр datetime добавляется со следующим:

sql2.Parameters.Add("@p_UpdateTime", SqlDbType.DateTime).Value = DateTime.Parse(updateTime);

и время безотказной работы устанавливается с

String updateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ff");

Ответы [ 5 ]

1 голос
/ 12 марта 2012

Используйте SQL Server Profiler (поставляется со всеми серверами sql).Он покажет полные команды, отправленные на сервер SQL.

1 голос
/ 12 марта 2012

Откройте Sql Server Profiler и проследите, что выполняется на вашем Sql Server.См. Базовый учебник по использованию инструмента.

0 голосов
/ 12 марта 2012

Я исправил это, я использовал ff в течение нескольких секунд, когда мне нужно было использовать ss

0 голосов
/ 12 марта 2012

Похоже, вы отправляете строковое значение.Это проблематично из-за изменения DateTime.Format в зависимости от текущей культуры потоков.

Попробуйте что-то подобное при передаче параметров:

DateTime dateParam = GetDateParam();

_sqlCommand.Parameters.Add(
    new SqlParameter
    {
        DbType = DbType.Date,
        ParameterName = "@p_param",
        Value = dateParam 
    });
0 голосов
/ 12 марта 2012

Вы можете преобразовать свой параметр следующим образом:

CONVERT(VARCHAR(19), @p_param, 120)

, где 120 - код преобразования для гггг-мм-дд чч: ми: сс (24 ч).

...