我似乎无法将sqldatatime.minvalue转换为datetime对象。
我试过了:
Datetime dt = Convert.ToDateTime(SqlDateTime.MinValue);
这显然不起作用。
答案 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)
您收到的答案向您展示了转换价值的两种不同方式。一种是使用为SqlDateTime
到DateTime
定义的显式转换,另一种是访问.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;