如何在SQL datetime字段中存储null或空


PHP: 01/01/1970 how to store a null or empty in a SQL datetime field

我需要你的智慧。

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

表单中的数据逐个字段存储在待定审批表中。存储待定审批日期值的字段为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。