2017-08-02 72 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的格式,然後根據它轉換你的日期格式,然後添加它在條件。還要確保你是否真的需要比較日期。