0

私は2つの日時ピッカーを持っています。私の選択クエリでは、これらの日付の間のレコードを取得したいと考えています。varchar(MAX) のデータベースの日付のデータ型。datetimepicker の場合、カスタム形式を dd-MM-yyyy に設定しました。ここに私のSQLクエリがあります

SqlDataAdapter da = new SqlDataAdapter("Select custname From tb_customer WHERE date >= '"+dtp_fromdate.Text+"' AND date <= '"+dtp_todate.Text+"'", con);

例: 開始日が 2012 年 9 月 6 日で、現在までが 2012 年 6 月 11 日である場合。上記のクエリでは、10-06-2012 と 11-06-2012 のレコードが表示されます

開始日が 10-06-2012 で、現在までが 11-06-2012 の場合。上記のクエリでは、11-06-2012 ではなく 10-06-2012 のレコードが表示されます

助けてください

4

2 に答える 2

1

ConvertまたはCastT-SQLを使用して、値をまたはに変換しVARCHARDateハードDateTimeコードされたSQL文字列の代わりにパラメーターを学習/使用します。

于 2012-06-09T09:22:22.253 に答える
0

問題は、パラメータが使用されていないことにあります。パラメーターを使用すると、ユーザーとデータベース バックエンドとの間の誤解を避けることができます

DataSet ds = new DataSet();
using (SqlConnection con = new SqlConnection(connectionString))
{
    SqlDataAdapter da = new SqlDataAdapter();
    string query = "Select custname From tb_customer WHERE date >= @from AND date <= @to"
    da.SelectCommand = new SqlCommand(queryString, con);
    da.SelectCommand.AddWithValue("@from" , dtp_fromdate.Value);
    da.SelectCommand.AddWithValue("@to" , dtp_to.Value);
    da.Fill(ds);
    return ds;
}
于 2012-06-09T09:31:07.200 に答える