SQL查询日期时间可能出错

时间:2017-08-02 16:15:37

标签: c# sql asp.net datetime

我正在尝试检索符合我条件的行数,但我不断返回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

Method中用于检索的代码:

// 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;
    }
}

日期时间是否可能被错误地格式化?

感谢任何帮助,谢谢!

2 个答案:

答案 0 :(得分:1)

有可能你的日期格式不同,数据库可能有其他格式,c#有其他格式,firt尝试获取ms sql的格式,然后根据它转换你的日期格式,然后添加条件。还要确保你是否真的需要比较日期时间。

答案 1 :(得分:0)

作为Selva TS noted in a comment,我忘记了一行代码。具体来说,我错过了ExecuteScalar。有了这个问题,现在一切正常。