以编程方式转换 Set DateTime 时出错

dom*_*ter 1 c# asp.net string datetime type-conversion

我在下面有一个方法可以count从一个名为的表中实际获取AuditActivity它,它需要今天的开始时间和今天的结束时间,分别是 00:00:00 和 23:59:59 以及另一个条件。一个datetime范围。

例如,今天的日期26/07/17,我想指定的where条件将DateTimeActivity采取count只当是between26/07/17 00:00:00和23:59:59 26/07/17。

我知道我编码的内容实际上是错误的,但我似乎无法正确完成。

我目前正在转换nvarchardatetime哪个错误..

额外信息:datatype对于 DateTimeActivitydatetime在我的database

以及上面提到的字段值的示例:'26/07/2017 22:43:06'

//Wrong
//Get Number of Logins today from AuditActivity
public int countLoginsToday()
{
    int count = 0;

    StringBuilder sqlCmd = new StringBuilder();
    sqlCmd.AppendLine("SELECT COUNT(*) FROM AuditActivity WHERE DateTimeActivity BETWEEN @getStartOfDay AND @getEndOfDay AND ActivityType = @getType");

    //Date Today
    String todayDate = DateTime.Now.Date.ToString();

    //Time Start
    String timeStart = "00:00:00";

    //Time End
    String timeEnd = "23:59:59";

    try
    {
        SqlConnection myConn = new SqlConnection(DBConnectionStr);

        myConn.Open();

        SqlCommand cmd = new SqlCommand(sqlCmd.ToString(), myConn);

        cmd.Parameters.AddWithValue("@getStartOfDay", Convert.ToDateTime(todayDate + " " + timeStart));
        cmd.Parameters.AddWithValue("@getEndOfDay", Convert.ToDateTime(todayDate + " " + timeEnd));
        cmd.Parameters.AddWithValue("@getType", "Login");

        count = Convert.ToInt16(cmd.ExecuteScalar());

        myConn.Close();

        return count;
    }
    catch (SqlException ex)
    {
        logManager log = new logManager();
        log.addLog("AuditNLoggingDAO.getLoginsToday", sqlCmd.ToString(), ex);
        return 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误:

在此处输入图片说明

任何帮助深表感谢!谢谢!

Nko*_*osi 5

你得到错误是因为

todayDate + " " + timeStart
Run Code Online (Sandbox Code Playgroud)

最终会变成

26/07/17 00:00:00 00:00:00
Run Code Online (Sandbox Code Playgroud)

这不是要转换的有效日期时间。

您可以按如下方式构建时间

//Time Start
var timeStart = DateTime.Today; // 26/07/17 00:00:00

//Time End
var timeEnd = timeStart.AddDays(1).AddSeconds(-1); // 26/07/17 23:59:59
Run Code Online (Sandbox Code Playgroud)

并将它们按原样添加到查询中

cmd.Parameters.AddWithValue("@getStartOfDay", timeStart);
cmd.Parameters.AddWithValue("@getEndOfDay", timeEnd);
Run Code Online (Sandbox Code Playgroud)