TSQL如果没有数据,则日期列为NULL
我有一个应用程序,其中有多个日期字段,管理员可以在需要时编辑。查询将更新表中的每个字段,并使用任何新信息更新它 默认情况下,表中的“我的3个日期”字段为空。当我运行更新查询时,即使我没有添加日期,它也会将列更新为:TSQL如果没有数据,则日期列为NULL,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有一个应用程序,其中有多个日期字段,管理员可以在需要时编辑。查询将更新表中的每个字段,并使用任何新信息更新它 默认情况下,表中的“我的3个日期”字段为空。当我运行更新查询时,即使我没有添加日期,它也会将列更新为: 1900-01-01 00:00:00.000 我的最新声明如下: UPDATE tuitionSubmissions SET reimbursementDate = COALESCE (@reimbursementDate, NULL), empGradDate
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;`
根据我的理解,我认为如果这些变量是空的,那么它只会保持字段为空
是否有其他方法可以做到这一点,使日期字段保持为空,直到实际的日期/值发送到存储过程?您使用的
COALESCE
毫无意义。它与相同,如果@replumentdate为NULL,则为NULL
。
像这样使用它:
SET reimbursementDate = COALESCE (@reimbursementDate, reimbursementDate)
在这种情况下,如果参数未通过,列将保持不变(即参数为
NULL
)字段是否可为NULL?您可以使用selectcolumnproperty(OBJECT_ID('TableName','U'),'ColumnName','AllowsNull')进行检查;看起来客户端代码正在向update语句传递非空值零(0)。尝试将coalesce语句更改为:NullIf(@replumentdate,'1900年1月1日')
我将其更新为此,但是,一旦我将其他字段发送到数据库,它会将这些字段从NULL更新为1900-01-01 00:00:00.000这起作用,我没有注意到我的VAR设置为varchar,而不是datetime