DateTime
and string
are different data types, and can't be casted to each other, like int
and float
. You need to parse string
in order to retrieve DateTime
. Try to use next code snippet to try to Parse DateTime
with default format, provided in current culture.
OleDbDataReader dbRead = cmd.ExecuteReader();
while (dbRead.Read())
{
product.DateReleased = dbRead["Date Released"] != DBNull.Value ? DateTime.Parse(dbRead["DATE"]) : null;
product.DatePublished = dbRead["Publish_Date"] != DBNull.Value ? DateTime.Parse(dbRead["Publish_Date"]) : null;
}
Assuming DatePublished
and DateReleased
is of type DateTime?
. If you have specific date format, you can use DateTime.ParseExact
method, which takes format as a parameter, for example
DateTime.ParseExact(dbRead["Date Released"], "dd.MM.yyyy", CultureInfo.InvariantCulture)
If DatePublished
and DateReleased
are of type string
, then you should call ToString()
on a DateTime, to convert it to string, like:
product.DateReleased = dbRead["Date Released"] != DBNull.Value ? dbRead["DATE"].ToString() : "No Date available";
product.DatePublished = dbRead["Publish_Date"] != DBNull.Value ? dbRead["Publish_Date"].ToString() : "No Date Available";
If the underlying column in your database has a DateTime
type, you can access GetDateTime
method on the OleDbDataReader
class, like
product.DateReleased = dbRead.GetDateTime("Date Released");