如何为数据类型选择月份"date"?



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

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

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

那么,我是否可以进行一种简单的查询类型来完成这项工作,而无需键入必须转换我的月份字符串?

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

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

上面的代码会将"04"分配给monthString

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

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

string query = @"SELECT * FROM table WHERE MONTH(date) = '" +  DATEPART(mm,CAST(month_combobox+ ' 1900' AS DATETIME)) + "'";

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

最新更新