首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:

2011-12-14 
存储过程中如何传递日期型参数,麻烦高手指点一下,谢谢!我有一个存储过程,用来从数据源表中取出符合参数传

存储过程中如何传递日期型参数,麻烦高手指点一下,谢谢!
我有一个存储过程,用来从数据源表中取出符合参数传递日期的数据到另一临时表中,这个日期是用户从界面上的组合框中选择的,而组合框里的数据通过数据绑定到一个查询视图(在查询视图中,有两列数据,一列是在组合框里显示的××××年××月,另一列是用来取得第一列数据的源数据)中取到。

当用户选择组合框里的一个日期时,通过数据读取器取到对应的源数据,并用一个日期型变量把这个数据保存起来。

然后通过传递这个日期型数据到存储过程中,得到从数据源中取到这个日期的记录的目的。具体代码如下:

但每次执行时,都提示以下错误:

SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间。

SQL code
ALTER PROCEDURE dbo.distribute_base(        @kaohe_term datetime            )ASbegin    select * into basedist_end_temp from basedist_end_product_sort where kaohe_term=@kaohe_termend        RETURN 



VB.NET code
 '以下代码从组合框中获取所选考核期间对应的考核具体时间        Dim kaohe_term As DateTime        Dim cn As SqlClient.SqlConnection = New SqlClient.SqlConnection("workstation id=WANGQIANG;packet size=4096;user id=sa;" & _        "password=120979120979;data source=WANGQIANG;persist security info=False;initial catalog=assessonline")        If cn.State = ConnectionState.Closed Then            cn.Open()        End If        Dim sqltime As SqlClient.SqlCommand = New SqlClient.SqlCommand("select distinct 所属期间,kaohe_term from " & _        "kaohe_term where kaohe_term='" & Me.select_kaoheterm.SelectedValue & "'", cn)        Dim sqlreader As SqlClient.SqlDataReader        sqlreader = sqltime.ExecuteReader()        Do While sqlreader.Read            kaohe_term = sqlreader("所属期间")        Loop        sqlreader.Close()        Response.Write(kaohe_term.GetType().Name)        Response.Write(" <script> alert('" & Me.select_kaoheterm.SelectedValue & "') </script> ")        '以下代码在生成数据前先删除所选考核期内生成的历史数据        Dim datamatching As SqlClient.SqlCommand = New SqlClient.SqlCommand("delete from projectexpense_matching where kaohe_term='" & kaohe_term & "'", cn)        datamatching.ExecuteNonQuery()        Dim datanomatching As SqlClient.SqlCommand = New SqlClient.SqlCommand("delete from projectexpense_nomatching where kaohe_term='" & kaohe_term & "'", cn)        datanomatching.ExecuteNonQuery()        'Response.Write("<script>alter('" & kaohe_term & "')</script>")        '以下代码为整理分摊率数据表   表名:basedist_end_temp          sqlcmddistribute_base.Connection = cn        sqlcmddistribute_base.CommandType = CommandType.StoredProcedure        sqlcmddistribute_base.CommandText = "distribute_base"        sqlcmddistribute_base.Parameters("@kaohe_term").Value = kaohe_term        'sqlcmddistribute_base.Parameters("@expense_name").Value = Me.Select1.Value        Dim SprocResults As SqlClient.SqlDataReader        If cn.State = ConnectionState.Closed Then            cn.Open()        End If        SprocResults = sqlcmddistribute_base.ExecuteReader()      '程序执行到这里时总报错,说数据类型不对        SprocResults.Close()


[解决办法]
sqlserver中,时间字符串就可以了,你把你传得时间打印出来看看,直接在查询分析器中执行那段sql语句,应该没问题的
[解决办法]
CONVERT(varchar, getdate(), 120 ) 可以将日期转换为如下格式:
2004-09-12 11:06:08 

先调试传至存储过程的参数的内容及格式,试试看能不能用上面的函数转换

热点排行