我正在使用C#编写程序,我可以按年份和月份选择并将数据放入dataGridView。年份很容易。我从comboBox中选择年份并执行此查询:
"SELECT * FROM table WHERE YEAR(date) = '" + year_comboBox.Text + "'";
因为数据库中的年份格式是2010年,2011年,2012年等等,所以一切正常。但是当谈到几个月时,它们在我的组合框中,如1月,2月,3月等,它们在数据库中的格式是01,02,03等。所以我需要不同类型的查询或者我需要编写更多代码,以便我可以将1月,2月和其他月份的字符串转换为01,02等等,而且这不是真正的代码效率。
那么我是否可以使用一种简单的查询来完成这项工作而无需输入我的月份字符串?
答案 0 :(得分:2)
我认为你可以修改你的组合框,这样除了1月,2月,3月等文本外,每条记录的值分别为1,2,3等。然后,您可以将值传递给SQL以在月查询中使用。
(我可能错了,并且将组合框与下拉列表混淆。但是在你的年份测试中,你注意到你正在使用year_comboBox.Text
。如果有类似的Value
字段,请使用它设置月份值。)
答案 1 :(得分:2)
您可以使用DateTime.ParseExact方法将月份的名称转换为DateTime:
var monthString = DateTime.ParseExact("April", "MMMM", System.Globalization.CultureInfo.InvariantCulture).Month.ToString("00");
上面的代码会将“04”分配给monthString
。
答案 2 :(得分:0)
string query = @"SELECT * FROM table WHERE MONTH(date) = '" + DATEPART(mm,CAST(month_combobox+ ' 1900' AS DATETIME)) + "'";
使用DatePart,您可以从数字中获取月份名称。 (不确定'或')