2015-04-22 39 views
0

創建表時如何添加表級約束以檢查數據類型爲datetime的列是否爲空?如何定義表約束來檢查非空日期時間?

+3

NOT NULL約束。 – jarlh

+0

你可以讓你的列不允許空值。 –

+1

你不能在日期時間字段中插入空'''',但可以插入等於'01.01.1900 00:00'的0。如果你不想這樣做,添加一個檢查約束'check mydatetimecol> 0' –

回答

2

你會使用這樣的事情與NOT NULL

CREATE TABLE [dbo].[MyTable](
[ID] [int] NOT NULL, 
[MyField] [DATETIME] NOT NULL) 
+0

先生,這是一個日期時間數據類型。此外,我想防止空白/空列值(與我作爲一個開始我有限的SQL知識)不相同'NOT NULL' – Lalu

+0

我不知道sql-server,但如果它允許一個空字符串或者將空格字符(它確實不是相同的es null)插入到日期類型列中:扔掉它;) – evilive

+0

@Lalu - 我的歉意,我只是給你一個例子。如果您願意,我可以將示例數據類型更改爲「DATETIME」。 'DATETIME'不允許使用「空白」或「空白」值,如果該選項未設置爲「NOT NULL」,則僅爲「NULL」。 –

0

NOT NULL約束強制列不接受NULL值。

NOT NULL約束強制一個字段始終包含一個值。這意味着您不能插入新記錄,或者在不向該字段添加值的情況下更新記錄。

下面的SQL強制執行「P_Id」列和「姓」列不接受NULL值:如果日期字段有超出你知道不會有有效日期的點

CREATE TABLE PersonsNotNull 
(
P_Id int NOT NULL, 
LastName varchar(255) NOT NULL, 
FirstName varchar(255), 
Address varchar(255), 
City varchar(255) 
) 
+0

爵士,CREATE TABLE PersonsNotNull ( 的p_id詮釋NOT NULL, 名字爲varchar(255)NOT NULL, 名字爲varchar(255), 地址爲varchar(255), 市爲varchar(255),約束CK_PersonsNotNull_FirstName檢查(RTRIM( ltrim([PersonsNotNull]))<>'') )將不允許具有數據類型varchar的PersonsNotNull中的空/空值。我的問題是數據類型爲DATETIME的列。 – Lalu

0

,您可以將其設置爲較低的邊界。

Date_Field date check(Date_Field > '2000-01-01'), 

如果是人民出生日期,則必須將其設置回更合理的值。現在,重要的是如何輸入日期或是從哪個日期轉換而來,它必須在合理的範圍內才能被視爲有效。