0

我最近涉足 SQL 中的参数化查询。我现在在执行查询时收到有关日期的投诉

日历 System.Globalization.GregorianCalendar 不支持字符串表示的 DateTime。

当我得到查询时,我得到参数化的查询字符串

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");
4

5 回答 5

1

打开 Sql Server Profiler 并跟踪针对您的 Sql Server 执行的操作。请参阅有关如何使用该工具的基本教程。

于 2012-03-12T14:20:05.393 回答
1

使用 SQL Server Profiler(随所有 sql 服务器一起提供)。它将显示发送到 SQL 服务器的完整命令。

于 2012-03-12T14:18:08.797 回答
0

看起来您正在发送字符串值。这是有问题的,因为会DateTime.Format根据当前的线程文化进行更改。

传入参数时尝试这样的事情:

DateTime dateParam = GetDateParam();

_sqlCommand.Parameters.Add(
    new SqlParameter
    {
        DbType = DbType.Date,
        ParameterName = "@p_param",
        Value = dateParam 
    });
于 2012-03-12T14:25:06.670 回答
0

您可以像这样转换参数:

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

其中 120 是 yyyy-mm-dd hh:mi:ss(24h) 的转换代码。

于 2012-03-12T14:17:11.743 回答
-1

我现在已经修复了它,当我需要使用 ss 时,我使用了 ff 几秒钟

于 2012-03-12T14:34:39.243 回答