2012-10-17 7 views
5

W moim kodzie C#, mam zmienną DateTime?. Podczas pobierania wartości z bazy danych może to być null lub może mieć pewną wartość daty/czasu.Porównaj Nullable zmienna DateTime dla wartości domyślnej

Po stronie przedniej nie chcę uzyskać wartości domyślnej (01-01-1900 12:00:00). Jaki jest najlepszy sposób na porównanie mojej zmiennej daty dla tej domyślnej daty?

+0

Czy Twoja baza danych rzeczywiście przechowuje 'null' dla twojej kolumny? – mauris

+1

Żadna baza danych nie zapisuje "01-01-1900", jeśli wartość jest pusta. –

+1

Może powinieneś mieć składnicę bazy danych zamiast "01-01-1900"? –

Odpowiedz

6

Można utworzyć const:

static readonly DateTime DefaultDateTime = new DateTime(1900, 1, 1, 0, 0, 0); 

a następnie porównać ten sposób:

DateTime? myVariable = returnedFromDb == DefaultDateTime ? default(DateTime?) : returnedFromDb; 
+0

tak, dokładnie to zrobiłem. –

3

można mieć metodę rozszerzenia, coś takiego:

public static class DateTimeExtensions 
{ 
    static DateTime SQL_DEFAULT = new DateTime(1900, 1, 1); 

    public static bool IsDefaultValue(this DateTime dateTime) 
    { 
     return dateTime == SQL_DEFAULT; 
    } 
} 

a następnie po prostu przetestuj wartość:

var isDefault = myDate.IsDefaultValue();