我有一个在 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 " +
然后查询完美运行。这意味着查询中的这一行一定有问题。你能在某个地方看到它吗?我查看了多个网站以获取日期查询条件的示例,但找不到错误,也许您可以提供帮助。提前致谢。
我唯一注意到的是围绕 n 的 ' 符号。我应该改用引号吗?如果是这样,我怎样才能在引号内实现它?