C#中的SmallDateTime最小值和最大值

Mag*_*pie 18 c# sql

在C#中有一个SqlDateTime.MinValueSqlDateTime.MaxValue,但我找不到一个SmallDateTime来自SQL Server 的数据类型.

var smallDateTimeMin = DateTime(1900, 1, 1);
var smallDateTimeMax = DateTime(2079, 6, 6);
Run Code Online (Sandbox Code Playgroud)

是否有一个或我需要自己实现这个?

Geo*_*ker 17

为什么不使用扩展方法?

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());
Run Code Online (Sandbox Code Playgroud)

不可否认,它对扩展属性来说很好,但那些还不存在.


And*_*mar 5

没有smalldatetime相应的System.Data.SqlTypes.新型也没有等同物datetime2.所以我不希望.NET框架中的那些类型的min-max常量.

但这些类型在MSDN上有详细记录:

日期和时间数据从1753年1月1日到9999年12月31日,精确到三百分之一秒(相当于3.33毫秒或0.00333秒).值将四舍五入为.000,.003或.007秒的增量,如表中所示.

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

  • 根据您链接的文档,`smalldatetime`仅适用于2079年6月6日. (4认同)

abo*_*021 5

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

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));
}
Run Code Online (Sandbox Code Playgroud)