我正在将日期时间值从 C# 传递到 SQL Server SP。如果我传递格式 dd-MM-yyyy
那么它工作正常但不会从 SP 返回任何值,即使有该日期的记录。如果我以 MM-dd-yyyy
格式运行 SP,则它会返回错误“将数据类型 nvarchar 转换为 datetime 时出错。”。 SP是
执行 usp_detData '22/12/2012 00:00:00', '31/12/2013 23:59:59'
--- 错误
执行 usp_detData '12/22/2012 00:00:00', '12/31/2013 23:59:59'
--- 工作正常
你能告诉我解决方案吗
最佳答案
I am passing a datetime value from C# to SQL Server SP.
我相信您是通过字符串连接传递的。如果你使用 SqlParameter 会更好DateTime
类型并让服务器处理它。
using (SqlCommand cmd = new SqlCommand(" usp_detData", conn))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@StartDate", DateTime.Now.AddDays(-10));
cmd.Parameters.AddWithValue("@EndDate", DateTime.Now);
SqlDataReader dr = cmd.ExecuteReader();
.....
}
还可以考虑使用 using使用实现 IDisposable 的对象阻止您的代码.例如。 SqlCommand
, SqlConnection
, SqlDataReader
等
关于c# - 字符串未被识别为 Sql 服务器的有效 DateTime C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14686371/