【问题标题】:Type Conversion Errors with DateTimeDateTime 的类型转换错误
【发布时间】:2015-02-18 16:32:23
【问题描述】:

我正在尝试使用以下代码将数据添加到名为“ModifiedDate”且类型为“DateTime”的 SQL 数据库列中:

Dim fso As FileSystemObject
Dim dteModifiedDate As Date
Dim cm As ADODB.Command
Dim cn As ADODB.Connection

Set fso = New FileSystemObject
Set cm = New ADODB.Command
Set cn = New ADODB.Connection

cn.CursorLocation = adUseClient
cn.ConnectionString = strDBConnectionString
cn.Open

Set cm.ActiveConnection = cn

dteModifiedDate = fso.GetFile("C:\TestFile.txt").DateLastModified

cm.Parameters.Append cm.CreateParameter("@ModifiedDate", adDBDate, adParamInput, , dteModifiedDate)

cm.CommandText = "SELECT CAST('@ModifiedDate' as DateTime) FROM MainData"
cm.CommandType = adCmdText

cm.Execute

问题是当我运行它时,代码在执行语句上中断并出现此错误:

Run-time error -2147217913 (80040e07)
conversion failed when converting date and/or time from character string. 

我为命令尝试了几种不同的“类型”(adDate、adDBTimestamp、adWChar 等...),但在数据类型之间的转换方面出现错误。

您为此使用什么数据类型?显然,我需要能够使用与 SQL 表数据类型兼容的类型来正确获取参数数据类型。

【问题讨论】:

    标签: sql vba datetime adodb type-conversion


    【解决方案1】:

    您无需指定日期的长度。 adDate 也应该没问题:

    cm.Parameters.Append cm.CreateParameter("@ModifiedDate", adDate, adParamInput, , dteModifiedDate)
    

    【讨论】:

    • 感谢您的回复。我按照建议进行了更改,但它没有解决问题,因此我更新了原始帖子,提供了更多详细信息和新错误。
    • 给dteModifiedDate加个watch,变量赋值的时候赋值给什么?
    • 它被分配为“18/02/2015 16:48:44”作为日期类型
    • 只是为了检查一下,您是否尝试过使用adDate而不指定长度参数?
    • 是的,我用不带长度的adDate参数试过了:)
    猜你喜欢
    • 1970-01-01
    • 2013-10-19
    • 2013-04-24
    • 1970-01-01
    • 1970-01-01
    • 2012-10-09
    • 1970-01-01
    • 2012-08-16
    • 1970-01-01
    相关资源
    最近更新 更多