TSQL如果没有数据,那么在日期列上为NULL

时间:2014-05-21 14:26:54

标签: sql sql-server tsql

我有一个应用程序,其中有多个日期字段,可在需要时由管理员编辑。该查询更新表中的每个字段,并使用任何新信息更新它。

默认情况下,表格中的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,直到将实际日期/值发送到存储过程?

1 个答案:

答案 0 :(得分:2)

您对COALESCE的使用毫无意义。与IF @reimbursementDate IS NULL THEN NULL相同。 像这样使用它:

SET reimbursementDate = COALESCE (@reimbursementDate, reimbursementDate)

在这种情况下,如果未传递参数(即参数为NULL

,则列将保持不变