1

winform アプリには、データベースの値を表示するための datagridview があります。これらの次のコードを使用して、2010 年 6 月 5 日から 2010 年 7 月 5 日の間など、2 つの特定の日時の間の結果を表示しますが、これらの日時で正確に更新された行を表示するだけです。つまり、正確な登録日と終了日を含む行を表示するだけです。これらの時間の間のすべての結果を見たいです。

private void button1_Click(object sender, EventArgs e)
    {
        sql = new SqlConnection(@"Data Source=PC-PC\PC;Initial Catalog=Test;Integrated Security=True");
        adapter = new SqlDataAdapter("select EntryID,Name,FamilyName,Registrationday,Finishday,Fee from Entry where Registrationday =@Registrationday AND Finishday =@Finishday", sql);
        adapter.SelectCommand.Parameters.AddWithValue("@Signday", Convert.ToDateTime(textBox1.Text).ToShortDateString());
        adapter.SelectCommand.Parameters.AddWithValue("@Finishday", Convert.ToDateTime(textBox2.Text).ToShortDateString());
        dt = new DataTable();
        adapter.Fill(dt);
        dataGridView1.DataSource = dt;
    }
4

4 に答える 4

2

間隔が重なっている行の場合:

Registrationday <= @Finishday AND Finishday >= @Registrationday 

これは、次のすべての行に一致します。

-------R-------F-----------
    *------------*
     *------*
       *---*
          *---*
            *------*

間隔内に完全に含まれる行の場合:

Registrationday >= @Registrationday AND Finishday <= @Finishday 

これは、次の行のみに一致します。

-------R-------F-----------
       *---*
          *---*
于 2012-05-06T18:53:23.337 に答える
1

クエリ文字列を更新するだけです

adapter = new SqlDataAdapter("select EntryID,Name,FamilyName,Registrationday,Finishday,Fee from Entry where Registrationday >=@Registrationday AND Finishday <=@Finishday", sql);
于 2012-05-06T18:56:34.943 に答える
1

範囲に <= および >= を指定します

 Registrationday >=@Registrationday AND Finishday <=@Finishday
于 2012-05-06T18:53:20.427 に答える
1

使用できますBETWEEN

SELECT  EntryID, Name, FamilyName, Registrationday, Finishday, Fee 
FROM    [Entry] 
where Registrationday BETWEEN @Registrationday AND  @Finishday 

なぜフィルターをかけるのかは明らかではありませんがFinishday

asStringパラメータではなく、DateTime

adapter.SelectCommand.Parameters.AddWithValue("@Registrationday", Convert.ToDateTime(textBox1.Text));
adapter.SelectCommand.Parameters.AddWithValue("@Finishday", Convert.ToDateTime(textBox2.Text));
于 2012-05-06T18:54:06.217 に答える