0

gridviewとsqldatasourceがあります。tabledefinitionでは、日付のデフォルトの形式はmm:dd:yyyyですが、SQL設定などから形式をdd:mm:yyyyに変更する方法はありますか。

フォームロード(dd / mm / .yyyyの場合)でグローバリゼーションがありますが、データソースからいくつかの日付の間にいくつかの値を選択している場合:

 string d1 = Convert.ToDateTime(date1.Text).ToString("dd.MM.yyyy");
 string d2 = Convert.ToDateTime(date2.Text).ToString("dd.MM.yyyy");
 SqlDataSource1.SelectCommand = "Select * FROM test WHERE Name = '"+name.Text+"' AND Date between '"+d1+"' AND '"+d2+"'";

に対してのみ機能しmm/dd/yyyyます。

それを変更する方法はありますか?

4

5 に答える 5

4

文字列への不要な変換を避け、パラメータを使用します。

DateTime d1 = Convert.ToDateTime(date1.Text);
DateTime d2 = Convert.ToDateTime(date2.Text);
SqlDataSource1.SelectCommand = "Select * FROM test WHERE Name = @name AND Date between @d1 AND @d2";
SqlDataSource1.SelectCommand.Parameters.AddParameterWithValue("@name", name.Text);
SqlDataSource1.SelectCommand.Parameters.AddParameterWithValue("@d1", d1);
SqlDataSource1.SelectCommand.Parameters.AddParameterWithValue("@d2", d2);
于 2012-06-15T07:13:59.830 に答える
3

クエリでパラメータを使用できると、より良い結果が得られます。また、列タイプがDateの場合、比較のために列を文字列に変換しない方がよいでしょう。次を試してください

SqlDataSource1.SelectParameters.Add("@d1", date1);
SqlDataSource1.SelectParameters.Add("@d2", date2);
SqlDataSource1.SelectCommand = "Select * FROM test WHERE Name = '"+name.Text+"' AND Date between @d1 AND @d2";

名前のパラメータも使用します

于 2012-06-15T07:16:40.120 に答える
1

パラメータ化されたクエリを使用すると、すべての問題が解消されます。:)

SqlDataSource1.SelectCommand = "Select * FROM test WHERE Name = @p_Name AND Date between @p_from AND @p_to";
SqlDataSource1.SelectCommand.Parameters.Add ("@p_Name", SqlDbType.String).Value = name.Text;
SqlDataSource1.SelectCommand.Parameters.Add ("@p_from", SqlDbType.DateTime).Value = d1;
SqlDataSource1.SelectCommand.Parameters.Add ("@p_to", SqlDbType.DateTime).Value = d2;
于 2012-06-15T07:12:36.930 に答える
1

パラメータを使用してみてください:

SqlDataSource1.SelectCommand = "SELECT * FROM test WHERE Name = @Name AND Date between @DateLow AND @DateHigh";
SqlDataSource1.SelectParameters.Add("Name", name.Text);
SqlDataSource1.SelectParameters.Add("DateLow", DbType.DateTime, d1);
SqlDataSource1.SelectParameters.Add("DateHigh", DbType.DateTime, d2);
于 2012-06-15T07:17:44.663 に答える
0
SqlDataSource1.SelectCommand= " SELECT [columns] FROM [table] WHERE Name =   
'"+name.Text+"' AND Date BETWEEN  
CONVERT(Date,'"+d1+"' , 105)  AND CONVERT(Date,'"+d2+"', 105)"

これを試して....

于 2012-06-15T07:09:28.143 に答える