私は C# アプリケーションを開発しておりdate
、SQL Server に列を持っています。
を使用して、日付に基づいてクエリを実行していますDateTimePicker
。日時ピッカーの形式を短い形式に変更しました。日付が次のように表示されるようになりましたmm-dd-yyyy
実行中に日付1〜12から正しい出力が得られますが、13の日付を選択するとすぐにエラーが発生します
文字列から日付/時刻を変換する際に変換に失敗しました
何が起こっているのかわからない!
私は C# アプリケーションを開発しておりdate
、SQL Server に列を持っています。
を使用して、日付に基づいてクエリを実行していますDateTimePicker
。日時ピッカーの形式を短い形式に変更しました。日付が次のように表示されるようになりましたmm-dd-yyyy
実行中に日付1〜12から正しい出力が得られますが、13の日付を選択するとすぐにエラーが発生します
文字列から日付/時刻を変換する際に変換に失敗しました
何が起こっているのかわからない!
DateTimePicker
そこからフォーマットされた文字列を使用して、フォーマット文字列または連結を介してオンザフライでSQLクエリを作成していると思われます。
そうしないでください。
SQL の日付/時刻文字列リテラルは、パーツの順序が異なる適切な形式 (ISO 8601 など) を使用する傾向があります。ピースを 12 から 13 に変更すると爆発するという事実は、実際にはそれを与えるはずです。
にSqlCommand
はパラメーターがあります ( を使用してクエリに挿入できます@foo
。これらを使用すると、すべてが正しい方法で渡され、適切に引用されます。
using (SqlCommand c = connection.CreateCommand()) {
c.CommandText = "Select roll_number,name from Attendance_table where date=@date";
c.Parameters.AddWithValue("date", dateTimePicker1.Value);
using (var r = c.ExecuteReader()) {
...
}
}
(大まかに言えば、適切な使用法についてはドキュメントを参照する必要があります。私がそのようなことを書いたのは久しぶりです)