我有一个问题:
如何在SQL Server中创建一个表,默认日期时间为空,而不是我得到的1900-01-01 00:00:00.000
。
我的意思是,如果没有插入值,则默认值应为null,为空......
由于
答案 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)
your_field DATETIME NULL DEFAULT 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。让你插入真正的空值而不是字符串,那么数据库将存储一个空值。