使用SqlDataReader的C#我想从列中获取日期时间值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用SqlDataReader的C#我想从列中获取日期时间值相关的知识,希望对你有一定的参考价值。

我正在使用 :

string date1 = reader. GetDateTime(reader. GetOrdinal("firstMove"). ToString() 

但它正在抛出异常,特别是如果值为null ....

答案

请尝试以下代码。

string date1=reader["coloumn name"].tostring();
另一答案

如果你告诉我们你得到的是什么样的例外,你获得例外的事实会更容易解决。可能的错误是:

  1. 专栏不是qazxsw poi,这个qazxsw poi根本不起作用
  2. DateTime根本不是有效的列名,因此您无法访问该列

假设列真的存在并且类型为GetDateTime,我倾向于使用以下内容:

firstMove

这非常有效。你想要的是什么

DateTime

要么:

DateTime? d = reader["firstMove"] as DateTime?;
另一答案

对你来说,使用DateTime(或可以为空的DateTime - DateTime?)而不是字符串来处理日期会更好。

如果要使用此方法,可以使用扩展方法:

DateTime? d = reader["firstMove"] as DateTime?;
string dstring = d.HasValue ? d.Value.ToString() : "";

用法:

string date1 = !reader.IsDBNull(reader.GetOrdinal("firstMove")) ? reader.GetDateTime(reader.GetOrdinal("firstMove").ToString() : String.Empty;

您甚至可以改进扩展方法,因此它可以接收列名并在内部查找序号位置。

希望这可以帮助,

另一答案

使用如下所示,通过使用或函数来检查null是否为null。

public static class IDataReaderExtensions
{
    public static DateTime GetDateTimeOrMinValue(this IDataReader dr, int position)
    {
        if (dr.IsDBNull(position))
        {
            return DateTime.MinValue;
        }

        return dr.GetDateTime(position);
    }

    public static DateTime? GetDateTimeOrNull(this IDataReader dr, int position)
    {
        if (dr.IsDBNull(position))
        {
            return null;
        }

        return dr.GetDateTime(position);
    }
}

以上是关于使用SqlDataReader的C#我想从列中获取日期时间值的主要内容,如果未能解决你的问题,请参考以下文章

如何从列中删除日期和月份(类型:datetime64)[重复]

从列中减去一个值并将结果存储在一个新的列 SQL 中

根据 Pandas 中另一列中的索引从列中获取数据

在JavaScript / jQuery中从列中获取所有值而不重复

PowerBI:根据度量过滤器从列中获取值

如何在不使用 regexp_like 的情况下从列中获取整数