Herrozerro
Herrozerro

Reputation: 1681

SQLDataReader Null to datetime

Having an issue with casting a datetime from a reader where the value is null.

form._date101 = reader[52] == DBNull.Value ? DBNull.Value : (DateTime?)reader[52];

getting: Type of conditional expression cannot be determined because there is no implicit conversion between 'System.DBNull' and 'System.DateTime?'

any ideas?

Upvotes: 2

Views: 4136

Answers (2)

KyleMit
KyleMit

Reputation: 30227

You can also take Jon's answer and add it as an extension method like this:

public static class ReaderExtensions
{
    public static DateTime? GetNullableDateTime(this SqlDataReader reader, string name) =>
        reader[name] == DBNull.Value ? (DateTime?)null : (DateTime?)reader[name];
}

Then you can use it like this:

item.PatientDob = reader.GetNullableDateTime("Birth_Dt");

Upvotes: 2

Jon Skeet
Jon Skeet

Reputation: 1503290

I suspect you meant:

form._date101 = reader[52] == DBNull.Value ? null : (DateTime?)reader[52];

That's assuming that _date101 is a field of type DateTime?. I expect you want to say "Use the null value of DateTime? if the value was null in the database; otherwise use the non-null value.

Upvotes: 12

Related Questions