0

我正在用 C# 编写一个程序,我可以按年和月选择数据并将其放入 dataGridView 中。年份部分很简单。我从组合框中选择年份,然后执行以下查询:

"SELECT * FROM table WHERE YEAR(date) = '" + year_comboBox.Text + "'";

因为数据库中的年份格式是 2010、2011、2012 等等,所以一切正常。但是当谈到月份时,它们在我的组合框中,如 1 月、2 月、3 月等,它们在数据库中的格式是 01、02、03 等。所以我需要不同类型的查询,或者我需要编写更多代码,以便我可以将一月、二月和其他月份的字符串转换为 01、02 等等,这并不是真正的代码效率。

那么有没有一种简单的查询类型可以让我在不输入转换月份字符串的情况下完成这项工作?

4

3 回答 3

2

我认为您可以修改您的组合框,以便除了一月、二月、三月等的文本之外,每条记录还有一个1、2、3 等。然后您可以将该值传递给 SQL 以使用在您的月份查询中。

(我可能错了,并且将组合框与下拉列表混淆了。但是在您的年份测试中,您注意到您正在使用year_comboBox.Text。如果有类似的Value字段,请使用它来设置月份值。)

于 2012-04-12T19:38:19.663 回答
2

您可以使用DateTime.ParseExact方法将月份名称作为字符串转换为 DateTime :

var monthString = DateTime.ParseExact("April", "MMMM", System.Globalization.CultureInfo.InvariantCulture).Month.ToString("00");

上面的代码会将“04”分配给monthString.

于 2012-04-12T19:50:22.360 回答
0
string query = @"SELECT * FROM table WHERE MONTH(date) = '" +  DATEPART(mm,CAST(month_combobox+ ' 1900' AS DATETIME)) + "'";

使用 DatePart 您可以从数字中获取月份名称。(不确定 ' 或 " )

于 2012-04-12T19:44:50.430 回答