C# SmallDateTime最小值和最大值(以C为单位)#

C# SmallDateTime最小值和最大值(以C为单位)#,c#,sql,C#,Sql,在C#中有一个SqlDateTime.MinValue和SqlDateTime.MaxValue,但是我无法从SQL Server中找到一个用于SmallDateTime数据类型的 var smallDateTimeMin = DateTime(1900, 1, 1); var smallDateTimeMax = DateTime(2079, 6, 6); 有一个或者我需要自己实现吗?既然SQLDateTimedatetime和smalldatetime,我想你必须手动实现。在系统.Data

在C#中有一个
SqlDateTime.MinValue
SqlDateTime.MaxValue
,但是我无法从SQL Server中找到一个用于
SmallDateTime
数据类型的

var smallDateTimeMin = DateTime(1900, 1, 1);
var smallDateTimeMax = DateTime(2079, 6, 6);

有一个或者我需要自己实现吗?

既然
SQLDateTime
datetime和
smalldatetime
,我想你必须手动实现。

系统.Data.SqlTypes
中没有类似的
smalldatetime
。对于新的
datetime2
类型,也没有等效的。因此,在.NET framework中,我不希望这些类型使用最小-最大常量

但这些类型在以下方面有很好的记录:

1月1日起的日期和时间数据, 1753年至1999年12月31日 准确度为1/300 a 第二(相当于3.33 毫秒或0.00333秒)。 值四舍五入为的增量 .000、.003或.007秒,如图所示 在桌子上


因此,您可以轻松定义自己的最小-最大常数。

为什么不使用扩展方法

public static class DateTimeExtensions
{
    public static DateTime SmallDateTimeMinValue(this DateTime sqlDateTime)
    {
        return new DateTime(1900, 01, 01, 00, 00, 00);
    }
    public static DateTime SmallDateTimeMaxValue(this DateTime sqlDateTime)
    {
        return new DateTime(2079, 06, 06, 23, 59, 00);
    }

}


DateTime date = DateTime.Now;
Console.WriteLine("Minvalue is {0} ", date.SmallDateTimeMinValue().ToShortDateString());

诚然,对于扩展属性来说这很好,但这些属性还不存在。

最小值1900-01-01 00:00:00


最大值2079-06-06 23:59:00

您必须使用自己的常量。如果没有
SqlSmallDateTime
,似乎
System.Data.SqlTypes
名称空间是不完整的,但事实并非如此。该名称空间的目的是提供防止类型转换错误的类

System.Data.SqlTypes命名空间为SQL Server 2005中的本机数据类型提供类。这些类为.NET Framework公共语言运行库(CLR)提供了一种更安全、更快的数据类型替代方案。使用此命名空间中的类有助于防止由于精度损失而导致的类型转换错误。由于其他数据类型在后台转换为SqlTypes或从SqlTypes转换为SqlTypes,因此在此命名空间中显式创建和使用对象也会产生更快的代码


由于
SqlDateTime
足以满足此目的,因此未提供
SqlSmallDateTime

出于我的目的,我使用了一个简单的静态助手类:

public static class SqlSmallDateTime
{
    public static readonly SqlDateTime MinValue = 
        new SqlDateTime(new DateTime(1900, 01, 01, 00, 00, 00));

    public static readonly SqlDateTime MaxValue = 
        new SqlDateTime(new DateTime(2079, 06, 06, 23, 59, 00));
}

smalldatetime
根据您链接的文档,它只适用于2079年6月6日。