如何从数据库中获取可为空的 DateTime

2024-04-05

我的 SQL Server 数据库包含可为空的 DateTime 值。如何将它们转换为 C# 应用程序中可为 null 的 DateTime 对象?

这就是我认为的样子,但事实并非如此:

DateTime? dt = (DateTime?) sqldatareader[0];

SQL null 与 .NET null 不同;您必须与 System.DBNull.Value 进行比较:

object sqlDateTime = sqldatareader[0];
DateTime? dt = (sqlDateTime == System.DBNull.Value)
    ? (DateTime?)null
    : Convert.ToDateTime(sqlDateTime);

为了回答你的评论,数据类型Item的财产DataReader是底层数据库类型的类型。它可能是System.Data.SqlTypes.SqlDateTime对于非空 SQL Server 数据库,或者System.DBNull对于空列,或者System.Data.Odbc.OdbcTypes.SmallDateTime对于 ODBC 数据库,或者任何其他数据库。你唯一可以信赖的是它是类型object.

这也是我建议使用的原因Convert.ToDateTime()而不是类型强制DateTime。不保证 ODBC 或任何日期列可以强制转换为 .NETDateTime。我注意到你的评论指定了一个“sqldatareader”和一个 SQL ServerSystem.Data.SqlTypes.SqlDateTime确实可以被强制System.DateTime,但你原来的问题并没有告诉我们这一点。

有关使用的更多信息DataReaders,咨询MSDN http://msdn.microsoft.com/en-us/library/haa3afyz%28v=vs.100%29.aspx.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从数据库中获取可为空的 DateTime 的相关文章

随机推荐