2017-12-07 9 views
0

ユーザーから日付を取得し、その日付より前のすべての日付を見つけるはずです。winformで入力したユーザーを使用してSQL Serverから日付を取得する

DateTime dat = dateTimePicker1.Value.Date; 
string datS = dat1.ToString("yyyy-MM-dd"); 
string query = "SELECT * FROM test3table WHERE datum" + 
        " <= " + "datum LIKE '%' + @Datum + '%'"; 
// '2017-12-06' -> works fine 
SqlCommand comm = new SqlCommand(query, conn); 
comm.Parameters.AddWithValue("@Datum", datS); 

このように構文が間違っていますか?

+0

ここでは、クエリを実行しますか関連するすべてのコードを表示するためにこれを編集してください。適切なパラメータ化されたクエリを構築する方法についてもGoogle検索を行います。日付=> = <=と= 'LIKE' 'Strings or Characters'の日付に最適なキーワードです – MethodMan

+0

あなたの返事をありがとう。スティーブの質問が私の問題を解決しました。あなたが言いましたこれらのことを見ていきます。 –

答えて

0
 DateTime dat = dateTimePicker1.Value.Date; 

     string query = "SELECT * FROM test3table WHERE datum <= @Datum"; 

     SqlCommand comm = new SqlCommand(query, conn); 
     comm.Parameters.AddWithValue("@Datum", dat); 
は自分自身にいくつかのトラブルの文字列に変換し、背中を保存するために DateTimeにあなたの列タイプを変更し

。それでは、上記のことができます。

0

SQLクエリの構文が正しくありません。私はこれで何が必要と考えている:

string query = "SELECT * FROM test3table WHERE datum" + 
       " < '" + @Datum + "'"; 

これは次のようになりますSQLクエリを構築する必要があります。私は "のためのあなたの規定の必要性を一致させるために<にご<=オペレータを変更

SELECT * FROM test3table WHERE datum < '2017-12-06' 

注意その日付の前のすべての日付 "となります。

のタイプがDATETIMEの場合、日付の値は午前0時に評価されます。したがって2017-12-062017-12-06 00:00と読み替えられます。

関連する問題