【发布时间】:2018-01-01 23:49:45
【问题描述】:
我有一个方法可以从名为AuditActivity 的表中实际获取count,它需要今天的开始时间和今天的结束时间,分别为 00:00:00 和 23:59:59 以及另一个健康)状况。 datetime 范围。
例如,今天的日期 26/07/17,我想在 where 条件中指定 DateTimeActivity 仅在 between 26/07/17 00:00 时取 count: 00 和 26/07/17 23:59:59。
我知道我的编码实际上是错误的,但我似乎无法正确编码。
我目前正在将 nvarchar 转换为 datetime 这是错误的..
额外信息:datatype for DateTimeActivity 在我的database 中是datetime
以及上面提到的字段值示例:'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;
}
}
我得到的错误:
非常感谢任何帮助!谢谢!
【问题讨论】:
-
我猜问题是
todayDate的值是"07/26/2017 00:00:00",然后你传递给Convert.ToDateTime()的值最终会是"07/26/2017 00:00:00 00:00:00"。正如其他人所指出的,一直使用DateTime,不要使用字符串。 -
同意。使用建议的答案之一将为您解决这个问题。
标签: c# asp.net string datetime type-conversion