2012-10-17 13 views
5

In meinem C# -Code habe ich eine DateTime? Variable. Beim Abrufen der Werte aus der Datenbank kann es sich um null handeln oder um einen Datums-/Uhrzeitwert.Vergleichen Nullable DateTime Variable für den Standardwert

Auf der Vorderseite möchte ich nicht den Standardwert (01-01-1900 12:00:00 Uhr) erhalten. Was ist der beste Weg, um meine Datumsvariable für dieses Standarddatum zu vergleichen?

+0

Speichert Ihre Datenbank tatsächlich null für Ihre Spalte? – mauris

+1

Nein, die Datenbank speichert "01-01-1900", wenn der Wert Null ist. –

+1

Vielleicht sollte der Datenbankspeicher null anstatt "01-01-1900" haben? –

Antwort

6

Sie eine konst erstellen:

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

und dann vergleichen diese Weise:

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

Ja, ich habe genau das getan. –

3

Sie eine Erweiterungsmethode haben kann, etwa so:

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

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

Und dann Testen Sie einfach den Wert:

var isDefault = meinDatum.IsDefaultValue();