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



我的代码如下:

我正在使用:

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. 在 sql 中使用SqlParameters而不是日期的字符串连接。
  2. 将参数添加到SqlCommand并将其传递给SqlDataAdapter

建议 1 将避免 SQL 注入攻击。

如何实现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 格式以匹配输入的格式。

最新更新