我需要你的智慧。
我有一个表单。这个表单有一个输入日期的字段。来自此表单的数据存储在一个表中,等待审批,当来自此表的信息获得批准时,将进入最终表。
表单中的数据逐个字段存储在待定审批表中。存储待定审批日期值的字段为varchar空。存储最终日期的字段为datetime null。
现在,当没有在表单的日期字段中输入数据时,我在两个表中都得到了01/01/1970。
更新最终表的过程有:
ALTER PROCEDURE [dbo].[myprocedure]
@id INT = NULL
,@mydate VARCHAR(8000) = NULL
AS
SET NOCOUNT OFF;
BEGIN TRY
UPDATE dbo.definitive SET
mydate = CASE WHEN @mydate IS NULL THEN mydate ELSE CONVERT(DATETIME, @mydate, 103) END
WHERE ( id= @id)
如果在表单的日期字段中没有输入数据,我要做什么才能在表中获得空值或空值?
非常感谢!
您应该检查您的表字段结构,以确保null值是允许的(不确定它是否可用于日期格式和SQL服务器)。另一件事是日期01/01/1970相当于时间戳0,它可以被同化为日期的空值,所以你可以很容易地管理,我猜
您不会从HTML表单中获得值"NULL"。你只能得到字符串。如果一个字段没有被填充,您将得到一个空字符串。
如果字段是空字符串,您的NULL检测应该尝试插入NULL,但只有当您确定空字符串对该字段无效时才会这样做。如果中间表的目的是尽可能原始地存储表单数据,我可能根本不会使用VARCHAR NULL
。表单将发送空字符串,所以将它们存储为不带NULL值的空字符串。
在插入最终表之前,您的表单处理应该验证日期,如果无效(并且不可修复)或未给出,则将其设置为NULL。