在SQL和c#中疯狂地使用日期
本文关键字:日期 疯狂 SQL | 更新日期: 2023-09-27 18:03:45
我正在开发一个c#应用程序,我在SQL Server中有一个date
列。
我正在使用DateTimePicker
执行基于日期的查询。我已经将日期时间选择器的格式更改为短,现在它显示日期为mm-dd-yyyy
现在在执行时,我从日期1-12得到正确的输出,但一旦我选择13日期,我就会得到错误
从字符串
转换日期/时间失败
我不知道发生了什么!
我怀疑您正在使用来自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()) {
...
}
}
(大致-您应该查阅文档以了解正确的用法,我写这样的东西已经有一段时间了)