0

我需要你的智慧。

我有一个表格。此表单有一个输入日期的字段。此表单中的数据存储在等待批准的表中,当此表中的信息获得批准时,将进入最终表。

表单中的数据逐个字段存储在待批准表中。存储待批准日期值的字段是 varchar null。存储最终日期的字段是 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 或空?

非常感谢!

4

2 回答 2

1

您应该检查表字段结构以确保允许空值(不确定它是否可用于日期格式和 SQL 服务器)。另一件事是日期 01/01/1970 相当于时间戳 0,它可以被同化为日期的空值,所以我猜你可以轻松管理

于 2013-06-06T08:34:00.293 回答
0

您不会从 HTML 表单中获得值“NULL”。你只得到字符串。如果未填写字段,则会得到一个空字符串。

如果字段是空字符串,您的 NULL 检测应该尝试插入 NULL,但前提是您确定空字符串对该字段无效。VARCHAR NULL如果它的目的是将表单数据尽可能地存储为原始数据,我可能根本不会使用中间表。表单将发送空字符串,因此将它们存储为没有 NULL 作为值的空字符串。

在插入决赛表之前,您的表单处理应验证日期,如果无效(且不可修复)或未给出,则将其设置为 NULL。

于 2013-06-06T09:15:29.553 回答