2012-12-18 84 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