C# アプリケーション内で実行する次の SQL クエリがあります。アクセスで作成されたローカル(サーバーなし)データベースで作業します:
string query = @"SELECT s.TagID, se.SessionID, '" +
DateTime.Now.ToString("MM/dd/yy HH:mm:ss tt") +
"' AS ScanningTime " +
" FROM (((Student s " +
" LEFT JOIN [CourseID-ModuleID] cm ON s.CourseID = cm.CourseID) " +
" LEFT JOIN [ModuleID-SessionID] ms ON ms.ModuleID = cm.ModuleID) " +
" LEFT JOIN [Session] se ON ms.SessionID = se.SessionID) " +
" WHERE s.TagID = @tagNo " +
" AND se.SessionDate = Date() " +
" AND DateAdd('n', -30, [SessionTimeStart]) < @timeNow " +
" AND se.SessionTimeEnd > @Plus30Min ";
クエリで使用されるパラメーターと変数:
DateTime TimePlus = DateTime.Now.AddMinutes(30);
DateTime now = DateTime.Now;
string Plus30Min = TimePlus.ToString("hh:mm tt");
string timeNow = now.ToString("hh:mm tt");
command.Parameters.Add("tagNo", OleDbType.Integer).Value = tagNo;
command.Parameters.Add("Plus30Min", OleDbType.VarChar).Value = Plus30Min;
command.Parameters.Add("timeNow", OleDbType.VarChar).Value = timeNow;
現時点では、このクエリは実行されますが、結果は生成されません。ただし、次の行を削除すると:
" AND DateAdd('n', -30, [SessionTimeStart]) < @timeNow " +
その後、クエリは完全に実行されます。これは、クエリ内のこの行に何か問題があるに違いないことを意味します。どこかで見えますか?日付クエリ条件の例について複数の Web サイトを調べましたが、間違いを見つけることができませんでした。前もって感謝します。
私が気付いた唯一のことは、n を囲む ' 記号です。代わりに引用符を使用する必要がありますか? もしそうなら、どうすれば引用符の中でそれを達成できますか?