2012-12-18 181 views
7

我有一个问题请: 我如何创建SQL服务器的默认日期时间为空,而不是1900-01-01 00:00:00.000,我得到的表。默认情况下,在sql datetime列中插入空值/空值

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

感谢

+5

'如果没有插入值,默认值应该为空,空'那么为什么不使用Nullable,并插入'NULL'? –

+0

我已经允许NULL VARIABLES .. –

+1

你可以显示一个样本'INSERT'语句? – zimdanen

回答

17

如果没有插入的值,默认值昭ULD为空,空

在表定义,使这个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', ..); 
+0

问题是,如果输入是空的,那么它不应该把'1900-0-0-0等',但NULL,我不应该把所有这些条件然后 –

+0

@OziOz看到我的编辑。使它成为'DEFAULT NULL'并将它放在插入列表中,其他方式如果你没有使用'DEFAULT NULL',使它成为空值并在该列中插入null –

+0

对不起马哈茂德我不明白你那么好:( 我在哪里把这个? 我应该为此创建一个新的查询吗? DateTimeColumn DateTime DEFAULT NULL, –

0
  1. 定义它像your_field DATETIME NULL DEFAULT NULL
  2. 不插入一个空字符串,插入一个NULL INSERT INTO x(your_field)VALUES(NULL)
0

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

- 只是一个侧面思想。似乎你有事情的工作。

0

今天早上我有同样的问题。看来,对于DATE或DATETIME字段,不能插入空值。我通过首先检查一个空值(mydate =“”)来解决这个问题,如果它是空的,在插入前设置mydate =“NULL”。

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

+1

_“DATE和DATETIME字段的行为方式与VARCHAR相同”_ - 这是因为空的非-null字符串('“”')是一个有效的字符串,但不可能构造一个有效的,空的非空日期。 – CodeCaster