下面的代码看看: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