可能的错误
问题描述:
我想检索符合我的条件的行数,但我不断收到返回0行..可能的错误
SQL查询:
SELECT COUNT(*)
FROM AuditActivity
WHERE Username = '______'
AND DateTimeActivity >= CONVERT(datetime, '01/08/2017 00:00:00')
AND DateTimeActivity <= CONVERT(datetime, '01/08/2017 23:59:59')
AND ActivityType = 'Login'
数据在SQL Server表:在方法中使用
代码检索:
// Bar Chart Current Week Monday (Login)
public int barMondayLogin(String username)
{
int result = 0;
StringBuilder sqlCmd = new StringBuilder();
sqlCmd.AppendLine("SELECT COUNT(*) FROM AuditActivity WHERE Username = @getUsername AND DateTimeActivity BETWEEN @getFirstDT AND @getLastDT AND ActivityType = @getType");
try
{
SqlConnection myConn = new SqlConnection(DBConnectionStr);
myConn.Open();
SqlCommand cmd = new SqlCommand(sqlCmd.ToString(), myConn);
//DateTime
DateTime currentDT = DateTime.Today;
DateTime FirstDT = currentDT.AddDays(-(int)currentDT.DayOfWeek + 1);
DateTime SecondDT = FirstDT.AddDays(1).AddSeconds(-1);
Debug.WriteLine("Date: " + FirstDT + " " + SecondDT);
cmd.Parameters.AddWithValue("@getUsername", username);
cmd.Parameters.AddWithValue("@getFirstDT", FirstDT);
cmd.Parameters.AddWithValue("@getLastDT", SecondDT);
cmd.Parameters.AddWithValue("@getType", "Login");
myConn.Close();
return result;
}
catch (SqlException ex)
{
logManager log = new logManager();
log.addLog("AuditNLoggingDAO.barMondayLogin", sqlCmd.ToString(), ex);
return 0;
}
}
难道有可能datetime格式错误?
感谢任何帮助,谢谢!
答
它可能是你的日期格式不同,数据库可能有其他格式和C#有一些其他格式,先试着得到MS SQL的格式,然后根据它转换你的日期格式,然后添加它在条件。还要确保你是否真的需要比较日期。
尝试区域设置不可知格式:'20170801 23:59:59' –
您可以更新您正在使用的检索数据的方法吗? ExecuteNonQuery或ExecuteScalar? –
我看不到'cmd.ExecuteReader();'? –