如何将sqldatetime.minvalue转换为datetime?

时间:2011-10-07 13:57:31

标签: c# datetime

我似乎无法将sqldatatime.minvalue转换为datetime对象。

我试过了:

Datetime dt = Convert.ToDateTime(SqlDateTime.MinValue);

这显然不起作用。

3 个答案:

答案 0 :(得分:143)

无需转换。 SqlDateTime具有Value属性,可返回DateTime

DateTime dt = SqlDateTime.MinValue.Value;

答案 1 :(得分:70)

有什么理由不使用explicit conversion operator

DateTime dt = (DateTime) SqlDateTime.MinValue;

这对我有用:

using System;
using System.Data.SqlTypes;

class Test
{
    static void Main()
    {
        DateTime dt = (DateTime) SqlDateTime.MinValue;
        Console.WriteLine(dt);
    }
}

答案 2 :(得分:15)

您收到的答案向您展示了转换价值的两种不同方式。一种是使用为SqlDateTimeDateTime定义的显式转换,另一种是访问.Value实例上的SqlDateTime属性,该属性返回DateTime

var date = theSqlDate.Value; // via property
var date = (DateTime)theSqlDate; // via explicit conversion

有一些值得考虑的权衡。 SqlDateTime通过值SqlDateTime.Null支持数据库中的空值概念(DBNull,由另一个现在删除的答案引用)。如果您访问“null”实例上的Value属性,则会遇到SqlNullValueException。另一方面,显式转换为DateTime会导致{January 1, 1900 12:00:00 AM}。您的代码中可能不需要这些结果。使用非null默认值覆盖数据库中的有效空条目可能与在运行时获取异常一样糟糕。

如果数据库中有可为空的列,并且您正在使用SqlDateTime,则可能需要以不同方式明确地测试和处理SqlDateTime.Null,然后可能无关紧要转换其他值。

DateTime? date;
if (theSqlDate.Equals(SqlDateTime.Null))
    date = null
else 
    date = theSqlDate.Value; // or (DateTime)theSqlDate;