在SQL和c#中疯狂地使用日期

本文关键字:日期 疯狂 SQL | 更新日期: 2023-09-27 18:03:45

我正在开发一个c#应用程序,我在SQL Server中有一个date列。

我正在使用DateTimePicker执行基于日期的查询。我已经将日期时间选择器的格式更改为短,现在它显示日期为mm-dd-yyyy

现在在执行时,我从日期1-12得到正确的输出,但一旦我选择13日期,我就会得到错误

从字符串

转换日期/时间失败

我不知道发生了什么!

在SQL和c#中疯狂地使用日期

我怀疑您正在使用来自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()) {
        ...
    }
}

(大致-您应该查阅文档以了解正确的用法,我写这样的东西已经有一段时间了)