在C#中有一个SqlDateTime.MinValue
和SqlDateTime.MaxValue
,但我找不到SQL Server中SmallDateTime
数据类型的一个。
var smallDateTimeMin = DateTime(1900, 1, 1);
var smallDateTimeMax = DateTime(2079, 6, 6);
我自己需要实现这个吗?
答案 0 :(得分:16)
为什么不使用扩展方法?
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());
不可否认,扩展属性很好,但那些还不存在。
答案 1 :(得分:5)
smalldatetime
中没有System.Data.SqlTypes
个等效词。也没有新的datetime2
类型的等价物。所以我不希望.NET框架中的那些类型的min-max常量。
但是这些类型在MSDN上有详细记录:
1月1日的日期和时间数据, 1753年至9999年12月31日,到了 准确度为三百分之一 第二(相当于3.33 毫秒或0.00333秒)。 值四舍五入为增量 .000,.003或.007秒,如图所示 在表中。
因此,您可以轻松定义自己的最小 - 最大常数。
答案 2 :(得分:3)
出于我的目的,我使用了一个简单的静态助手类:
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));
}
答案 3 :(得分:2)
自SQLDateTime
maps to both datetime
和smalldatetime
后,我猜您必须手动执行此操作。
答案 4 :(得分:2)
最低值1900-01-01 00:00:00
最大值2079-06-06 23:59:00
答案 5 :(得分:1)
您必须使用自己的常量。如果没有System.Data.SqlTypes
,SqlSmallDateTime
名称空间似乎不完整,但事实并非如此。该命名空间的目的是提供防止类型转换错误的类。
System.Data.SqlTypes命名空间为SQL Server 2005中的本机数据类型提供了类。这些类为.NET Framework公共语言运行库(CLR)提供的数据类型提供了更安全,更快速的替代方法。使用此命名空间中的类有助于防止因精度损失而导致的类型转换错误。由于其他数据类型在后台与SqlTypes进行转换,因此在此命名空间中显式创建和使用对象也会产生更快的代码。
由于SqlDateTime
足以达到此目的,因此不会提供SqlSmallDateTime
。