5

我将日期时间值从 C# 传递到 SQL Server SP。如果我通过格式dd-MM-yyyy,那么它工作正常,但即使有该日期的记录,也不会从 SP 返回任何值。如果我使用 format 运行 SP MM-dd-yyyy,则返回错误“将数据类型 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'--- 工作正常

你能告诉我解决方案吗

4

3 回答 3

4

我将日期时间值从 C# 传递到 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,SqlConnectionSqlDataReader

于 2013-02-04T12:06:58.253 回答
1

尝试这个 :

DateTime.ParseExact("12/02/21 10:56:09", "dd/MM/YYYY HH:mm:ss", 
    CultureInfo.InvariantCulture
    ).ToString("MMM. dd, yyyy HH:mm:ss")

或者通过这个问题Convert DateTime to a specified Format

于 2013-02-04T12:07:41.280 回答
0

使用格式 'yyyy-MM-dd HH:mm:ss' 一切都会好起来的。

于 2013-02-04T12:03:14.040 回答