Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Now()插入日期时间字段时出错(SQL Server 2005 9.0.5057)_Sql_Sql Server 2005_Datetime_Asp Classic_Vbscript - Fatal编程技术网

将Now()插入日期时间字段时出错(SQL Server 2005 9.0.5057)

将Now()插入日期时间字段时出错(SQL Server 2005 9.0.5057),sql,sql-server-2005,datetime,asp-classic,vbscript,Sql,Sql Server 2005,Datetime,Asp Classic,Vbscript,我正在将ASP表单中的新行插入到服务器上的数据库中 当我查看服务器中的条目时,看起来它们实际上是在添加,但它确实在执行行停止了所有功能: With .Parameters(@blahblah) = Request.Form("blahblah") .Parameters("@lastUpdate") = Now() ... .Execute End With 以

我正在将ASP表单中的新行插入到服务器上的数据库中

当我查看服务器中的条目时,看起来它们实际上是在添加,但它确实在执行行停止了所有功能:

With        
   .Parameters(@blahblah) = Request.Form("blahblah")  
   .Parameters("@lastUpdate") = Now()        
   ...         
   .Execute        
End With
以下是我得到的错误:

用于ODBC驱动程序的Microsoft OLE DB提供程序80040e07

[Microsoft][ODBC SQL Server驱动程序][SQL Server]将字符数据类型转换为日期时间数据类型导致日期时间值超出范围。/results.asp217

添加的条目在列中的日期为:

2011-11-28 15:52:13.000

我感觉只有在使用DateTime2SQL字段时才会出现我印象中的毫秒数

在研究之后,我尝试了一些运气不佳的事情:

  • 添加“Session.LCID=2057”-某些SQL Server具有英国或美国设置,这将覆盖用户设置
  • 尝试一系列不同的日期格式,例如FormatDateTime(Now(),0-5)
  • 我可以使用“下一步错误恢复”,但我更愿意正确更正

非常感谢您的帮助。

如果没有您的其他信息,我会这样做:

sqlcommand.Parameters.Add("@blahblah", SqlDbType.VarChar).Value = Request.Form("blahblah")
sqlcommand.Parameters.Add("@lastUpdate", SqlDbType.DateTime2).Value = Now()

最好的方法(如果可能的话)是让更新
lastUpdate
字段在数据库上触发

您已尝试传递命名参数,但如果
NamedParameters
值为False(默认情况下),将忽略参数名称(参数的附加顺序将受到影响)。见财产


在执行之前,请将
your\u command\u对象。NamedParameters
设置为
True

能否向我们展示更多代码,尤其是构建sql命令和添加参数的方式。数据库数据类型是什么?您是否确认您的代码没有以“错误”的顺序写入日期(美国和英国日期)?你可以改为现在写datetime.ToString(“yyyy-MM-dd HH:MM:ss”)吗?@Miika L.-请参阅我关于“添加”Session.LCID=2057(区域设置ID)的评论-这是确保日期以正确格式传递的原因。ToString()也是vbscript中的CStr()。数据库数据类型是datetime(不是datetime2)。在数据库中触发,这实际上是一个我没有想到的好主意。我将看看我能做些什么,并告诉您这是否解决了问题。谢谢,但我认为asp.vbscript“datetime”和SQL Server 2005“datetime”之间的格式似乎有问题。将日期时间变量(不要转换为字符串,作为日期时间传递)传递给日期时间类型的参数不需要任何格式(都是date、datetime、smalldatetime、datetime2)。试试看。我也尝试了一些变体。不过这很有趣:-不确定如何指定Now()来使用此格式(yyyymmddHHMMSS.xxx)