默认情况下,在sql datetime列中插入null / empty值

时间:2012-12-18 14:00:50

标签: sql

我有一个问题: 如何在SQL Server中创建一个表,默认日期时间为空,而不是我得到的1900-01-01 00:00:00.000

我的意思是,如果没有插入值,则默认值应为null,为空......

由于

6 个答案:

答案 0 :(得分:18)

  

如果没有插入值,则默认值应为null,为空

在表格定义中,将此datetime列设为空,不要定义NOT NULL

...
DateTimeColumn DateTime,
...
  

我已经允许空变量了。

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

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

或者,您可以使用DEFAULT constaints:

...
DateTimeColumn DateTime DEFAULT NULL,
...

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

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

答案 1 :(得分:0)

  1. 将其定义为your_field DATETIME NULL DEFAULT NULL
  2. 不要插入空白字符串,插入NULL INSERT INTO x(your_field)VALUES(NULL)

答案 2 :(得分:0)

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

- 只是一个想法。好像你有事情可以工作。

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

您可以这样使用:

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

答案 5 :(得分:0)

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