字符串未被识别为Sql服务器的有效DateTime C#
我将日期时间值从C#传递到SQL Server SP。 如果我传递格式dd-MM-yyyy
然后它工作正常但没有从SP返回任何值,即使有该日期的记录。 如果我使用格式MM-dd-yyyy
运行SP,则它返回错误“将数据类型nvarchar转换为datetime时出错”。 SP是
execute usp_detData '22/12/2012 00:00:00', '31/12/2013 23:59:59'
—错误
execute usp_detData '12/22/2012 00:00:00', '12/31/2013 23:59:59'
—工作正常
你能告诉我解决方案吗?
我将日期时间值从C#传递到SQL Server SP。
我相信你通过字符串连接传递它。 如果你使用DateTime
类型的SqlParameter并让服务器处理它,它会更好。
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
等。
试试这个 :
DateTime.ParseExact("12/02/21 10:56:09", "dd/MM/YYYY HH:mm:ss", CultureInfo.InvariantCulture ).ToString("MMM. dd, yyyy HH:mm:ss")
或者通过这个问题将DateTime转换为指定的格式
使用格式’yyyy-MM-dd HH:mm:ss’,事情一切都会好起来的。