C# 在SQL和c中疯狂使用日期
我正在开发一个C应用程序,在SQL Server中有一个日期列 我正在使用DateTimePicker基于日期执行查询。我已经将datetime选择器的格式更改为short,现在它将日期显示为mm dd yyyy 现在,当执行时,我从日期1-12得到正确的输出,但一旦我选择13日期,我得到错误为 从字符串转换日期/时间时转换失败C# 在SQL和c中疯狂使用日期,c#,sql,visual-studio-2010,sql-server-2008,C#,Sql,Visual Studio 2010,Sql Server 2008,我正在开发一个C应用程序,在SQL Server中有一个日期列 我正在使用DateTimePicker基于日期执行查询。我已经将datetime选择器的格式更改为short,现在它将日期显示为mm dd yyyy 现在,当执行时,我从日期1-12得到正确的输出,但一旦我选择13日期,我得到错误为 从字符串转换日期/时间时转换失败 我不知道发生了什么事 我怀疑您正在使用DateTimePicker中的格式化字符串通过格式化字符串或连接动态构建SQL查询 不要那样做 SQL中的日期/时间字符串文本倾
我不知道发生了什么事 我怀疑您正在使用DateTimePicker中的格式化字符串通过格式化字符串或连接动态构建SQL查询 不要那样做 SQL中的日期/时间字符串文本倾向于使用sane格式,即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()) {
...
}
}
粗略地说–您应该查阅文档以了解正确的用法,我写这些东西已经有一段时间了您能告诉我们如何查询该日期吗?您的查询是什么样子的?您是否应该使用参数?将参数类型设置为SqlDbType.Date通常可以解决大多数问题…最安全的选项是在传递到DbType时将日期格式化为ISO格式。我觉得您是在使用字符串进行查询,而不是在UI上解析字符串,并使用日期/日期时间参数进行查询。。。。您是如何进行查询的?如果1-12有效,但1-13无效,我强烈怀疑出于任何原因您使用dd mm格式。我的查询如下:从考勤表中选择roll_number,name,其中date=dateTimePicker1.Text我应该如何使用SqlDbType.date?请引导我,我不知道它