我有一个应用程序,其中有多个日期字段,可在需要时由管理员编辑。该查询更新表中的每个字段,并使用任何新信息更新它。
默认情况下,表格中的3个日期字段为空。当我运行更新查询时,即使我没有添加日期,它也会将列更新为:
1900-01-01 00:00:00.000
我的更新声明在这里:
UPDATE tuitionSubmissions
SET reimbursementDate = COALESCE (@reimbursementDate, NULL),
empGradDate = COALESCE (@gradDate, NULL),
payPeriod = COALESCE (@payPeriod, NULL),
[status] = @status,
notes = @notes,
managerApproval = @empID,
approvalDate = COALESCE (GETDATE(), NULL)
WHERE id = @tid;`
根据我的理解,我认为如果这些变量为空,那么它只会将字段保持为NULL。
是否有其他方法可以使日期字段保持为NULL,直到将实际日期/值发送到存储过程?
答案 0 :(得分:2)
您对COALESCE
的使用毫无意义。与IF @reimbursementDate IS NULL THEN NULL
相同。
像这样使用它:
SET reimbursementDate = COALESCE (@reimbursementDate, reimbursementDate)
在这种情况下,如果未传递参数(即参数为NULL
)