16

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

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

4

6 回答 6

26

如果没有插入值,默认值应该是null,empty

在表定义中,使该datetime列允许为空,而不是定义NOT NULL

...
DateTimeColumn DateTime,
...

我已经允许空变量了。

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

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

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

...
DateTimeColumn DateTime DEFAULT NULL,
...

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

INSERT INTO Table(name, ...)
VALUES('foo bar', ..);
于 2012-12-18T14:03:41.553 回答
1

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

于 2021-07-15T21:10:38.097 回答
0
  1. 像这样定义它your_field DATETIME NULL DEFAULT NULL
  2. 不要插入空白字符串,插入 NULLINSERT INTO x(your_field)VALUES(NULL)
于 2012-12-18T14:03:24.550 回答
0

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

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

于 2015-07-27T21:40:39.890 回答
0

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

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

于 2016-08-28T13:30:08.670 回答
0

你可以这样使用:

string Log_In_Val = (Convert.ToString(attenObj.Log_In) == "" ? "Null" + "," : "'" + Convert.ToString(attenObj.Log_In) + "',");
于 2020-09-08T19:36:17.643 回答