当前位置: 首页 > 知识库问答 >
问题:

当用户输入为空时,如何停止在SQL Server中插入默认日期格式1900-01-01

濮阳旭东
2023-03-14

我在我的应用程序中有一个输入字段,它通过日期选择器接受日期。有时用户不选择任何日期,他们可能会提交空白(客户端要求),因为这不是一个强制字段。

空白提交后,存储在SQL Server 2008数据库中的数据为“1900-01-01”。相反,我需要将数据存储为'NULL'或'empty'或'0000-00-00',而不是任何其他有效的日期格式。

如果<代码>请求。getparameter()为空,我试图插入“0000-00-00”。但它正在阻止插入。

我的目标是在用户提交空白字段时插入“NULL”或“--”或“900-00—00”。而不是“1900-01-01”。

共有1个答案

乐正嘉瑞
2023-03-14

不幸的是,SQL服务器将空白(即空字符串)解释为值为1900-01-01的日期。因此,当您编写:

insert into t (datecol)
    values ('');

这基本上被编译成:

insert into t (datecol)
    values ('1900-01-01');

你能做什么?最明显的是不要插入空白值。要插入NULL,请插入NULL。在这种情况下,可以使用NULLIF()

insert into t (datecol)
    values (nullif('', ''));

这将把输入转换为适当的值。

第二个选项是使用检查约束拒绝此类值:

alter table t add constraint chk_t_datecol
    check (date >= '1950-01-01');

也就是说,日期在某种可接受的范围内。

第三个选项是添加一个触发器,在输入时将'1900-01-01'转换为NULL值。

第四种选择是允许这些值,但使用计算列作为参考:

alter table t add datecol_good as ( nullif(datecol, '1900-01-01'));

所有这些选项都假定'1900-01-01'不是您希望在数据中出现的有效日期。

 类似资料:
  • 我创建了一个jquery DatePicker。我希望用户选择大于或等于当前日期的日期,所以我使用了。这将禁用所有以前的日期。 但是,通过输入字段,用户可以键入上一个日期。如何禁用输入字段而不禁用DatePicker?

  • 问题内容: 我有ASP经典页要在表中插入记录。我正在为5个字段使用表单元素。[ABC]([code],[updatedate],[flag],[Mfdate]。当用户未选择Mdate时,使用日期控件在Mdate中获取用户选择的日期,该查询在我的ASP中形成页面如下 在SQL Server中运行时,它将插入日期,但用户尚未选择任何值。 为什么会这样呢? 为数据类型是。 问题答案: 您尚未将其指定为n

  • 问题内容: 如何在MySQL中使列的默认值等于当前日期+ 30天?例如,如果当前日期为10-1-2011,则必须将列值插入为9-2-2011。 问题答案: 如果您使用的是MySQL> = 5.0,请使用触发器: 当您插入时,触发器将激活,设置为现在+ 30天。如果您的插入内容设置了日期,由于,它将覆盖该默认值。日期是使用计算的。

  • 问题内容: 我在将日期正确插入数据库中时遇到问题。 我使用这种格式,并且正确回显,但是,当我插入 它似乎无法成功运行,时间仍然是00:00:00,如果您能找到很好的解决方案,谢谢。 问题答案: 如果要存储当前时间,请使用MYSQL的函数。 如果需要使用PHP进行格式化,请尝试

  • null 所以我面临一个问题,如果打开,等待输入,如何停止它?我尝试过将它放在线程中并或使用作为标志,但它并没有停止

  • 问题内容: 用户停止键入时需要执行搜索。我知道我应该使用 setTimeout() 。但是使用 Reactjs我找不到它是如何工作的。 有人可以告诉我当用户停止键入几秒钟(假设为5)时如何调用方法(将处理Search)。我不知道该在哪里编写代码来检查用户是否停止键入。 我想在用户停止键入时调用sendToParent方法。 问题答案: 您可以按照以下方式使用您的代码, 另外,您需要在构造函数中绑定