【发布时间】:2018-01-13 02:42:18
【问题描述】:
我实际上是在创建一种方法来根据某个日期时间范围获取我的 asp 图表的详细信息。我看过这两个链接,
我的数据检索方法,
//Monthly Statistics
public int janLogin(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;
//Code Below gets only current Start and End of Current month
DateTime FirstDT = currentDT.AddDays(1 - currentDT.Day);
DateTime SecondDT = FirstDT.AddMonths(1).AddSeconds(-1);
cmd.Parameters.AddWithValue("@getUsername", username);
cmd.Parameters.AddWithValue("@getFirstDT", FirstDT);
cmd.Parameters.AddWithValue("@getLastDT", SecondDT);
cmd.Parameters.AddWithValue("@getType", "Login");
result = Convert.ToInt16(cmd.ExecuteScalar());
myConn.Close();
return result;
}
catch (SqlException ex)
{
logManager log = new logManager();
log.addLog("AuditNLoggingDAO.janLogin", sqlCmd.ToString(), ex);
return 0;
}
}
从方法名称 janLogin 中可以看出,我实际上正在尝试做的事情基本上是为了获取从 2017 年 1 月 1 日 00:00:00 到 2017 年 1 月 31 日 登录的人数。当前月份实际上是八月。我如何才能真正获得 2017 年所有十二个月(1 月至 12 月)的开始和结束月份(来自粗体示例)?
如果我没记错的话,它必须涉及一个 for 循环吗?最终计数是 12。但我很确定该怎么做.. 可能有重复的问题,但我似乎找不到符合我要求的问题..
感谢任何帮助。谢谢!
【问题讨论】:
-
开始不使用 AddWithValue 特别是日期 Can we Stop using addWithValue already?
-
第二你能解释一下你的数据库中两列的数据类型是什么吗?如果他们还存储时间部分,您的代码可能会被窃听
-
@Steve 感谢您的建议和文章,将来会修改! DateTime 是 firstDT 和 lastD 的数据类型