2017-08-02 69 views
0

我想检索符合我的条件的行数,但我不断收到返回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表:在方法中使用

Data

代码检索:

// 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格式错误?

感谢任何帮助,谢谢!

+3

尝试区域设置不可知格式:'20170801 23:59:59' –

+2

您可以更新您正在使用的检索数据的方法吗? ExecuteNonQuery或ExecuteScalar? –

+1

我看不到'cmd.ExecuteReader();'? –

回答

1

它可能是你的日期格式不同,数据库可能有其他格式和C#有一些其他格式,先试着得到MS SQL的格式,然后根据它转换你的日期格式,然后添加它在条件。还要确保你是否真的需要比较日期。