[英]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);
上述查询中需要修复的问题:
[date]
代替date
and
之前需要一个空格。 意见建议
SqlParameters
代替sql中日期的字符串缩写。 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.