下面的代碼看看:C#爲什麼我的日期時間總是空?
const string UPDATE_TIME_STATUS = "UPDATE BilledHour SET [SubmittedAt] = @SubmittedAt, TimeStatus = 2 WHERE EmployeeID = @EmployeeID AND WorkDate >= @FromDate AND WorkDate <= @ToDate AND TimeStatus = 1";
using (m_DAL = new DAL())
{
SqlCommand cmd = new SqlCommand(UPDATE_TIME_STATUS, m_DAL.sqlConn);
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add("@SubmittedAt", SqlDbType.DateTime).Value = DateTime.Now;
cmd.Parameters.AddWithValue("@EmployeeID", EmployeeID);
cmd.Parameters.AddWithValue("@EmployeeID", EmployeeID);
cmd.Parameters.AddWithValue("@FromDate", FromDate);
cmd.Parameters.AddWithValue("@ToDate", ToDate);
int rows = cmd.ExecuteNonQuery();
}
運行此代碼後,數據庫總是顯示[SubmittedAt]
列空。
WorkDate TimeStatus SubmittedAt
-----------------------------------------------
2016-12-26 00:00:00.000 2 NULL
2016-12-27 00:00:00.000 2 NULL
2016-12-28 00:00:00.000 2 NULL
2016-12-29 00:00:00.000 2 NULL
2016-12-30 00:00:00.000 2 NULL
它更新[TimeStatus]
列,所以我知道SQL語句執行。
下面是我在Management Studio中運行SQL審查結果:
DECLARE @EmployeeID int
DECLARE @SubmittedAt datetime
DECLARE @FromDate datetime
DECLARE @ToDate datetime
SET @EmployeeID = 3111
SET @SubmittedAt = GetDate()
SET @FromDate = '12/25/2016 12:00:00 AM'
SET @ToDate ='12/31/2016 12:00:00 AM'
select WorkDate, TimeStatus, SubmittedAt
from BilledHour
WHERE
EmployeeID = @EmployeeID
AND
WorkDate BETWEEN @FromDate AND @ToDate
我在做什麼錯?
可能是因爲您的WHERE子句沒有返回任何更新行。 – Fabio
也許是因爲SQL Server無法將您的'@ SubmittedAt'參數值識別爲日期。你爲什麼要調用'.ToString()'而不是簡單地傳遞'DateTime.Now'? –
您正在將日期轉換爲字符串。 「SumbittedAt」專欄是什麼類型? – ChrisF