数据类型:日期时间值的初始化

3

我正在更新一个表格,其中包含不同的值,其中还有一个日期数据类型。

在更新表格之后,我会根据数据类型将变量初始化为0和空格,但我无法初始化Datetime数据类型。

如何用C#实现这个功能?


为了帮助您,我们需要知道您是否使用ADO.NET 2.0、Linq-to-Sql或Entity Framework?这样我们才能更好地帮助您。 - Carlos G.
4个回答

7
您可以使用"default"关键字为每种值类型获取初始化值。
DateTime a = default(DateTime);

1
default(type)适用于任何类型,不仅限于值类型。 default(string)将返回null - this. __curious_geek

1

您可以隐式地将值初始化为default(type)。例如对于DateTime类型:default(DateTime)

对于数据库操作,您最好使用SqlDateTime类型,因为DateTime的最小或最大值通常无法作为日期类型存储在数据库中。

初始化:

string connString = "...";
string cmdText = @"INSERT INTO Test(col1, col2) VALUES (@col1, @col2)";
using (SqlConnection conn = new SqlConnection(connString))
{
    using (SqlCommand cmd = new SqlCommand(cmdText, conn))
    {
        cmd.Parameters.Add("@col1", SqlDbType.NVarChar).Value = ""; // or .Value=DBNull.Value;
        cmd.Parameters.Add("@col2", SqlDbType.DateTime).SqlValue = default(SqlDateTime); // or .Value=DBNull.Value;
    }
}

您可以将所有值初始化为 DBNull.Value


你能帮忙写一下 SQL 命令来完成这个吗?非常感谢。 - Dattu
你可以使用我更新的帖子中的代码。此外,如果表格中的列可为空,则您可以在代码中使用DBNUll来初始化值。 - Jaroslav Jandek

0
使用此代码将DateTime设置为null:
DateTime? datetime;

由于DateTime是一个结构体而不是类,因此当您声明该类型的字段或变量时,您会得到一个DateTime对象而不是引用。同样,就像int不能为null一样,这个DateTime对象永远不可能为null,因为它不是引用。

添加问号将其转换为可空类型,这意味着它既可以是DateTime对象,也可以是null。

最后,在使用该值时,请将该值分配给DateTime:

if(datetime.hasvalue)
{    
DateTime dt = datetime.value;
}

0

这个问题有点老了...但仍然相关。 创建一个新的DateTime变量

DateTime dDate = new DateTime();

将其初始值设为{1/1/0001 12:00:00 AM}...这可能是您想要的。
如果日期超出1753年1月1日至9999年12月31日的范围,MSSQL会给出一个范围错误 datetime TSQL
在数据库数据的情况下...我认为空日期比错误日期更好。 无论如何...初始化日期值的一种方法是:

DateTime dDate = new DateTime(1980,01,01);

关于这个的各种重载:DateTime 结构体


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接