【问题标题】:Insert null/empty value in sql datetime column by default默认在sql日期时间列中插入空/空值
【发布时间】:2021-07-16 05:10:38
【问题描述】:

如何在 SQL Server 中创建一个默认 DateTime 为空的表,而不是我得到的 1900-01-01 00:00:00.000?

我的意思是,如果没有插入值,默认值应该是null、空等

【问题讨论】:

  • if there is no value inserted, the default value should be null,empty 那为什么不让它为 Nullable,然后插入 NULL?
  • 我已经允许空变量了..
  • 你能展示一个示例INSERT 声明吗?

标签: sql


【解决方案1】:

如果没有插入值,默认值为null,empty

在表定义中,使datetime这个列允许为null,不是定义NOT NULL:

...
DateTimeColumn DateTime,
...

我已经允许 NULL 变量。

然后,只需在此列中插入NULL:

INSERT INTO Table(name, datetimeColumn, ...)
VALUES('foo bar', NULL, ..);

或者,您可以使用DEFAULT 约束:

...
DateTimeColumn DateTime DEFAULT NULL,
...

然后您可以在INSERT 语句中完全忽略它,它将与NULL 值一起插入:

INSERT INTO Table(name, ...)
VALUES('foo bar', ..);

【讨论】:

  • 问题是,如果输入是空的,那么它不应该把'1900-0-0-0 etc'而是NULL,我不应该把所有这些条件然后
  • @OziOz 查看我的编辑。将其设为DEFAULT NULL 并将其放入插入列表中,否则如果您未使用DEFAULT NULL,则将其设为可空并在该列中插入空
  • 对不起 Mahmud,我不太了解你 :( 我把这个放在哪里?我应该为此创建一个新查询吗?DateTimeColumn DateTime DEFAULT NULL,
  • @OziOz 如果此日期时间字段定义为DateTimeColumn DateTime DEFAULT NULL,则在插入列的列表中忽略它,它将以NULL 值插入。
  • 啊哈...好的,我明白了 :) 谢谢!
【解决方案2】:

即使您的列可以为空,插入一个空字符串也会将该值设置为 1900-01-01 00:00:00.000。让你插入真正的空值而不是字符串,那么数据库将存储一个空值。

【讨论】:

    【解决方案3】:
    1. 定义为your_field DATETIME NULL DEFAULT NULL
    2. 不要插入空字符串,插入NULL INSERT INTO x(your_field)VALUES(NULL)

    【讨论】:

      【解决方案4】:

      Ozi,当你创建一个新的日期时间对象时 日期时间 foo = 新日期时间(); foo 是用时间 datetime.minvalue() 构造的 在构建参数化查询时,您可以检查输入的值是否等于 datetime.minvalue()

      -只是一个侧面的想法。看来你的工作正常。

      【讨论】:

        【解决方案5】:

        今天早上我遇到了同样的问题。对于 DATE 或 DATETIME 字段,似乎无法插入空值。我通过首先检查一个空值 (mydate = "") 来解决这个问题,如果它是空的,在插入之前设置 mydate = "NULL"。

        DATE 和 DATETIME 字段的行为方式与 VARCHAR 字段不同。

        【讨论】:

        • “DATE 和 DATETIME 字段的行为方式与 VARCHAR 不同” - 这是因为空的非空字符串 ("") 是有效字符串,但不可能构造一个有效的、空的、非空的日期。
        【解决方案6】:

        你可以这样使用:

        string Log_In_Val = (Convert.ToString(attenObj.Log_In) == "" ? "Null" + "," : "'" + Convert.ToString(attenObj.Log_In) + "',");
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-08-12
          • 2022-08-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-19
          • 2012-02-28
          • 1970-01-01
          相关资源
          最近更新 更多