2012-12-04 76 views
1

请参阅下面的变量声明:VB.NET - 则DateValue( “0:0:0”)

dim DateTest As Date = DateValue("0:0:0") 

什么是DateTest实际上初始化。如果我单步执行代码,那么它说:#12:00:00 AM#。如果我试图在数据库(日期时间字段)中输入这个数据,那么会引发一个SQLTypeException异常:“SqlDateTime溢出。必须在1/1/1753 12:00:00 AM和12/31/9999 11:59之间:下午59点。“

DateValue(“0:0:0”)是否使用日期值初始化日期变量?

+0

为什么不通过代码并告诉我们DateTest.Year是什么?它位于SQL边界之间吗? – PeteH

回答

3

显然,它返回Date.MinValue这是最小的可能值为Date。此常量的值相当于0001年1月1日00:00:00.0000000。由于0001年小于1753年,数据库将引发异常。

我不知道DateValue,但代替旧的VB函数,我会使用.NET方法,如Date.Parse。例如:

Dim DateTest As Date = Date.Parse("2008-05-01") 
+0

+1链接。 – w0051977

2

啊,.net中的日期时间字段的最小值比Sql Server中的日期时间字段的最小日期要小得多。如果你想存储一个匹配的值,我建议在sql server中使用DateTime2(7)数据类型。

请参阅有关分钟日期倍以下文章:

TSQL分钟日期时间 http://technet.microsoft.com/en-us/library/ms187819.aspx

.NET分钟日期时间 http://msdn.microsoft.com/en-us/library/system.datetime.minvalue.aspx

TSQL DATETIME2描述: http://technet.microsoft.com/en-us/library/bb677335.aspx

+0

+1用于提供TSQL链接。 – w0051977