2012-10-17 15 views
5

Trong mã C# của tôi, tôi có biến số DateTime?. Trong khi nhận được các giá trị từ cơ sở dữ liệu, nó có thể là null hoặc có thể có một số giá trị ngày/giờ.So sánh biến Ngày giờ có thể thay đổi được với giá trị mặc định

Ở mặt trước, tôi không muốn nhận giá trị mặc định (01-01-1900 12:00:00 sáng). Whats cách tốt nhất để so sánh biến ngày của tôi cho ngày mặc định này là gì?

+0

Cơ sở dữ liệu của bạn có thực sự lưu trữ 'null' cho cột của bạn không? – mauris

+1

Không có kho lưu trữ cơ sở dữ liệu "01-01-1900" nếu giá trị là null. –

+1

Có lẽ bạn nên có kho lưu trữ cơ sở dữ liệu null thay vì "01-01-1900"? –

Trả lời

6

Bạn có thể tạo một const:

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

và sau đó so sánh theo cách này:

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

vâng tôi chính xác đã làm điều này. –

3

Bạn có thể có một phương pháp mở rộng, một cái gì đó như thế này:

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

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

Và sau đó chỉ cần kiểm tra giá trị:

var isDefault = myDate.IsDefaultValue();