1

SQLクエリを使用してC#アプリにデータを取得するデータベースがあります。

MonthCalendar から選択された現在の日のデータを取得するオプションがアプリにあります。

"between '" + monthCalendar1.SelectionStart.Month.ToString() + "' and '" + monthCalendar1.SelectionStart.AddDays(1).ToString()+

そのため、カレンダー フォームから 2012-03-06 を選択すると、SQL クエリに対して次のような結果が得られます。

between '2012-03-06' and '2012-03-12'

そしてそれは働いています。

今月全体のデータを取得したい - SQL クエリの一部を変更する方法 4 月の日を選択すると、次のようになります。

between '2012-04-01' and '2012-04-30'

?

編集:私はいくつかの進歩を遂げています-私は月の最初の日を持っていますが、最後にするにはどうすればよいですか?

monthCalendar1.SelectionStart.Year.ToString()+"-"+monthCalendar1.SelectionStart.Month.ToString().PadLeft(2,'0')+"-"+"01"
4

3 に答える 3

0
DateTime startDate = new DateTime(dt.Year, dt.Month, 1);
DateTime enddate = new DateTime(dt.Year, dt.Month, DateTime.DaysInMonth(dt.Year, dt.Month));


between '" + startDate.ToString("yyyy-MM-dd") + "' and '" + enddate.ToString("yyyy-MM-dd")+

これを使用して、選択した月の最終日を取得します

DateTime.DaysInMonth(dt.Year, dt.Month);

http://social.msdn.microsoft.com/Forums/en/Vsexpressvcs/thread/218260ec-b610-4fa6-9d1b-f56f3438b721

于 2012-04-20T11:06:53.713 に答える
0

SQL ステートメントを文字列としてまとめないでくださいボビーのテーブルを思い出してください...

それとは別に:

DateTime someDay = ...;
DateTime firstOfMonth = new DateTime(someDay.Year, someDay.Month, 1);
DateTime lastOfMonth = firstOfMonth.AddMonths(1).AddDays(-1);

string sqlString = "SELECT ... FROM ... WHERE ... AND ... BETWEEN @d1 AND @d2";
using (SqlCommand cmd = new SqlCommand(sqlString, connection))
{
    cmd.Parameters.AddWithValue("@d1", firstOfMonth);
    cmd.Parameters.AddWithValue("@d2", lastOfMonth);
    ...
}

EDIT考えてみてください:実際には、必要なものが と の間に
あるエントリを返さないことに気付くでしょう。実際には、選択した月の最初から翌月の最初までクエリを実行して、必要な情報を取得する必要があります (SQL Server はミリ秒を正確に格納できないため、1 日ではなく 1 ミリ秒を差し引いても役に立ちません)。lastOfMonth 00:00:01lastOfMonth 23:59:59

于 2012-04-20T11:12:47.530 に答える
-1
    DateTime startDate = DateTime.Parse("03.04.2012");

    DateTime firstofMonth = new DateTime(startDate.Year, startDate.Month, 1);

    DateTime endOfMonth = firstofMonth.AddMonths(1).AddDays(-1);
于 2012-04-20T10:49:10.300 に答える