问个C#和数据库的datetime数据的问题

C#中的datetime类型是不能为null的,数据库中的可以为null,但是现在我有个功能需求是用户在可以填时间,也可以不填时间,如果不填时间,那就会报错该字符串未被识别为有效的datetime,这个怎么转换
如族好塌果你是用拼接字符串的方式写入的话兆圆
string Sql = "Insert into TableName(DateAndTime) values(@DateAndTime)";

public object GetDBDate(string source)
{
if (source == null || source == "") return DBNull.Value;
try
{
return DateTime.Parse(source);
}
catch { return DBNull.Value;}
}

不知道你数据库的操作是拼接字符袜链串,还是用DbParameter,但是你知道
DbParameter有个DBNull.Value
拼接有null就可以了。
中间对时间的值进行一下判断再插入数据库
在C#里定义这个datatime的时候,这么写:DataTime? createTime ;
这样这个属性就可以赋值空值,如:createTime= null;
赋值时间的话是这样:困答createTime.Value = DataTime.Now
在插入数据库的神好时候,先判断它游尺铅是不是null,不是的话调用他的Value 属性取值;
这个是.net的新特性,好像是.net2.0的开始引进的
直接数据库设成varchar类型呗
加TRY CATCH 如果报错了就说明为空咯
可以判断有没有填写Datetime然后在Insert的时候看看是不是 要对该时间字段做插入就行了。
insert into TName(Field1,Field2.....) value(v1,v2...)如果Field2时间字段没有输厅或入则用如下语扮升伍句插入笑唯insert into TName(Field1,.....) value(v1,...)