如何在参数化查询中将字符串作为日期时间值传递

时间:2017-05-18 07:39:10

标签: c# sql asp.net datetime

我有一个选择查询。它将字符串作为日期时间传递,如下所示。

string SelectedDate = "16-04-2017";
string query1 = "SELECT * FROM test_details where  selected_date <=  @init ";
using (SqlCommand command = new SqlCommand(query1, con))
{
    command.Parameters.Add("@init", SqlDbType.DateTime).Value = Convert.ToDateTime(SelectedStartDate);
}

在本地系统中运行良好。但是当将代码上传到远程serevr时,它会显示错误"System.FormatException: String was not recognized as a valid DateTime." 我也试过下面的代码。但是显示了同样的问题。

command.Parameters.Add("@init", SqlDbType.DateTime).Value =  DateTime.ParseExact(SelectedStartDate, "mm/dd/yyyy", null);
command.Parameters.Add("@init", SqlDbType.DateTime).Value =  SelectedStartDate

1 个答案:

答案 0 :(得分:0)

问题在于将SelectedDate转换为DateTime对象。 Convert.ToDateTime()无法解析给定日期,并且您在ParseExact中也提供了错误的格式。最好你尝试以下方法:

DateTime dtValue = DateTime.ParseExact(SelectedDate, "dd-MM-yyyy", CultureInfo.InvariantCulture);
command.Parameters.Add("@init", SqlDbType.DateTime).Value = dtValue;