繁体   English   中英

从字符串转换日期和/或时间时,如何转换失败

[英]How to Conversion failed when converting date and/or time from character string

我的代码如下:

我在用:

date=datatype=date;
time=datatype=time;

private void button8_Click(object sender, EventArgs e)
{

    //cmd = new SqlCommand("select * from Client_Attendence where date='" +dateTimePicker1.Value + "'", con);
    DateTime dt1= Convert.ToDateTime((dateTimePicker1.Value));
    DateTime dt2 = Convert.ToDateTime((dateTimePicker3.Value));

    SqlDataAdapter sdf = new SqlDataAdapter("select * from Client_Attendence where date between '" + dt1+ "'and '"+dt2+"'", con);

    DataTable sd = new DataTable();
    sdf.Fill(sd);
    dataGridView1.DataSource = sd;
    //dataGridView1.Columns["balance"].DefaultCellStyle.BackColor = Color.Yellow;
    //dataGridView1.Columns["enddate"].DefaultCellStyle.BackColor = Color.Red;

}

首先将日期时间转换为字符串可能会有所帮助

dt1.ToShortDateString()
dt2.ToShortDateString()

您需要将DateTime值转换为String

DateTime dt1= Convert.ToDateTime(dateTimePicker1.Value.ToString());
DateTime dt2 = Convert.ToDateTime(dateTimePicker3.Value.ToString());

考虑到您的以下查询,我在这里必须建议的几件事:

SqlDataAdapter sdf = new SqlDataAdapter("select * from Client_Attendence where date between '" + dt1+ "'and '"+dt2+"'", con);

上述查询中需要修复的问题:

  1. 使用[date]代替date
  2. and之前需要一个空格。

意见建议

  1. 使用SqlParameters代替sql中日期的字符串缩写。
  2. 将参数添加到SqlCommand并将其传递给SqlDataAdapter

建议1将避免Sql Injection攻击。

如何实现2? 使用MSDN中的此链接

如果您发布的代码是复制/粘贴,则dt1和单词“ AND”之间没有空格。

"select * from Client_Attendence where date between '" + dt1+ "'and '"+dt2+"'"

需要是

"select * from Client_Attendence where date between '" + dt1+ "' and '"+dt2+"'"

还要仔细检查日期时间对象的格式。 根据它们在字符串中的表示方式,您可能需要如下定义您的Convert函数:

DateTime myDate = DateTime.ParseExact("2009-05-08 14:40:52,531", "yyyy-MM-dd HH:mm:ss,fff", System.Globalization.CultureInfo.InvariantCulture)

用您的变量替换实际的日期和时间,并更改yyy-MM-dd格式以匹配您输入的格式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM