【发布时间】:2024-01-15 05:59:01
【问题描述】:
我正在将 ASP 表单中的新行插入到我服务器上的数据库中。
当我查看服务器中的条目时,看起来它们实际上是在添加,但它确实在执行行停止了所有功能:
With
.Parameters(@blahblah) = Request.Form("blahblah")
.Parameters("@lastUpdate") = Now()
...
.Execute
End With
这些是我得到的错误:
用于 ODBC 驱动程序的 Microsoft OLE DB 提供程序 80040e07
[Microsoft][ODBC SQL Server Driver][SQL Server]char 数据类型到 datetime 数据类型的转换导致 datetime 值超出范围。/results.asp217
添加的条目在列中的日期为:
2011-11-28 15:52:13.000
我感觉这是我印象中的毫秒数,只有在使用 DateTime2 SQL 字段时才会出现。
在没有运气的情况下,我尝试了一些事情:
- 添加 'Session.LCID = 2057' - 一些 SQL 服务器具有英国或美国设置,这会覆盖用户设置
- 尝试多种不同的日期格式,例如 FormatDateTime(Now(), 0 - 5)
- 我可以使用“On Error Resume Next”,但我更愿意正确纠正。
感谢任何帮助。
【问题讨论】:
-
能否给我们展示更多代码,尤其是构建sql命令和添加参数的方式。
-
什么是数据库数据类型?您是否确认您的代码没有以“错误”的顺序(美国日期与英国日期)编写日期?你能把你的日期时间写成 Now.ToString("yyyy-MM-dd HH:mm:ss") 吗?
-
@Miika L. - 查看我关于“添加 'Session.LCID = 2057'(区域设置 ID)的评论” - 这是确保日期以正确格式传递的原因。 ToString() 在 vbscript 中也是 CStr()。数据库数据类型是 datetime(不是 datetime2)。
标签: sql sql-server-2005 datetime asp-classic vbscript