0

年と月ごとにデータを選択してdataGridViewに入れることができるC#でプログラムを実行しています。年の部分は簡単です。コンボ ボックスから年を選択し、次のクエリを実行します。

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

データベースの年の形式は 2010 年、2011 年、2012 年などであるため、すべて正常に機能します。しかし、月になると、1月、2月、3月などのコンボボックスにあり、データベース内の形式は01、02、03などです。したがって、別のタイプのクエリが必要になるか、必要になります1 月、2 月、およびその他の月の文字列を 01、02 などに変換できるようにコードをさらに記述する必要がありますが、これは実際にはコード効率がよくありません。

月の文字列を入力せずにこれを機能させるために作成できる単純なタイプのクエリはありますか?

4

3 に答える 3

2

1月、2月、3月などのテキストに加えて、各レコードに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 に答える