How could we handle null for a datetime field (got from SQL Server) in our program in c#?
The Nullable < T > structure is using a value type as a nullable type. By default DateTime is not nullable because it is a Value Type, using the nullable operator introduced in C# 2, you can achieve this. Using a question mark (?) after the type or using the generic style Nullable.
DateTime CAN be compared to null; It cannot hold null value, thus the comparison will always be false. DateTime is a "Value Type". Basically a "value type" can't set to NULL. But by making them to "Nullable" type, We can set to null.
Inserting a null value to the DateTime Field in SQL Server is one of the most common issues giving various errors. Even if one enters null values the value in the database is some default value as 1/1/1900 12:00:00 AM.
"NULL" can be specified as a value in the Date field to get an empty/blank by using INSERT statement. Example: CREATE table test1 (col1 date); INSERT into test1 values (NULL);
There are 3 common approaches here;
object
(perhaps as you fetch it from a data-reader), then DBNull.Value
can represent null. I don't tend to let this out of the data-layer, thoughDateTime.MinValue
is commonly interpreted as null
; a magic number, maybe - but it works and is supported by most data-binding etcNullable<T>
means you can use DateTime?
- i.e. a nullable-of-DateTime; just use DateTime?
where-ever you mean a DateTime
that can be null, and you can give it a value of null
or a valid DateTime
.Some other thoughts on data-access and nulls:
SqlCommand
you must use DBNull.Value
, not null
- see belowreader.IsDbNull(ordinal)
command stuff (with Nullable<T>
as the example):
param.Value = when.HasValue ? (object)when.Value : DBNull.Value;
Use DateTime?
What problem are you having, specifically?
-- Edit
Just so it's clear, that's a Nullable
DateTime object, not a question :)
DateTime? t = null;
-- Edit
Responding to comment, check it like so:
DateTime? theTime;
if( table["TheColumn"] == DBNull.Value ){
theTime = null;
} else {
theTime = (DateTime) table["TheColumn"];
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With