我正在开发一个C#应用程序,我在SQL Server中有一个date
列。
我正在使用DateTimePicker
基于日期执行查询。我已将日期时间选择器的格式更改为简短,现在它将日期显示为mm-dd-yyyy
现在执行时我从日期1-12得到正确的输出,但是一旦我选择了13日期,我就会收到错误
从字符串 转换日期/时间时转换失败
我不知道发生了什么!
答案 0 :(得分:4)
我怀疑你正在使用DateTimePicker
中的格式化字符串,通过格式字符串或连接来动态构建SQL查询。
不要那样做。
SQL中的日期/时间字符串文字倾向于使用合理的格式(即ISO 8601),其中部分的顺序不同。事实上,当你将一件作品从12变为13时它会爆炸,这实际上会让它消失。
SqlCommand
有参数(您可以在@foo
的查询中插入。使用这些参数将确保以正确的方式传递所有内容并正确引用:
using (SqlCommand c = connection.CreateCommand()) {
c.CommandText = "Select roll_number,name from Attendance_table where date=@date";
c.Parameters.AddWithValue("date", dateTimePicker1.Value);
using (var r = c.ExecuteReader()) {
...
}
}
(粗略 - 您应该查阅文档以了解正确使用情况,我写这些东西已经有一段时间了)