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。
我知道我编码的内容实际上是错误的,但我似乎无法正确完成。
我目前正在转换nvarchar为datetime哪个错误..
额外信息: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)
我得到的错误:
任何帮助深表感谢!谢谢!
你得到错误是因为
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)