【问题标题】:How to pass string as datetime value in parameterised query如何在参数化查询中将字符串作为日期时间值传递
【发布时间】:2017-10-17 21:33:32
【问题描述】:

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

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);
}

这在本地系统中运行良好。但是将代码上传到远程服务器时,它显示错误"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

【问题讨论】:

  • 尝试使用 DateTime.Parse(string) 而不是 DateTime.ParseExact
  • 您的代码在日期中有破折号,而您的解析中有正斜杠:“16-04-2017”和“mm/dd/yyyy”

标签: c# sql asp.net datetime


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    • 1970-01-01
    相关资源
    最近更新 更多