我有一個方法實際上從名爲AuditActivity
的表中獲得count
,從而它分別需要今天的開始時間和今天的結束時間00:00:00和23:59:59以及另一個條件。 A datetime
範圍。錯誤以編程方式轉換設置日期時間
例如,今天的日期26/07/17,我想指定的where
條件爲DateTimeActivity
採取count
只有當它是between
26/07/17 00:00:00 26/07/17 23:59:59。
我知道我在編碼實際上是錯誤的,但我似乎無法做到正確。
我目前正在轉換nvarchar
到datetime
這是不對的..
額外信息:datatype
爲DateTimeActivity是datetime
我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;
}
}
錯誤我越來越:
任何幫助非常感謝!謝謝!
我想問題是'todayDate'的值是''07/26/2017 00:00:00'',然後你傳遞給'Convert.ToDateTime()'最終會變成'' 07/26/2017 00:00:00 00:00:00「'。正如其他人所指出的,一直使用'DateTime'不要使用字符串。 –
同意。使用建議的答案之一將爲您解決這個問題。 – Cory