Mysql 使用ADODB.Parameter获取两个日期之间的值

Mysql 使用ADODB.Parameter获取两个日期之间的值,mysql,sql,excel,vba,Mysql,Sql,Excel,Vba,(1)表格: (2)VBA Sub Get_Data() Dim conn As ADODB.Connection, _ cmd As New ADODB.Command, _ param As ADODB.Parameter, _ rs As New ADODB.Recordset Set conn = New ADODB.Connection conn.ConnectionString = "DRIVER={MySQL ODBC 5.1 Driver}; SERVER=l

(1)表格:

(2)VBA

Sub Get_Data()

Dim conn As ADODB.Connection, _
cmd As New ADODB.Command, _
param As ADODB.Parameter, _
rs As New ADODB.Recordset

    Set conn = New ADODB.Connection
    conn.ConnectionString = "DRIVER={MySQL ODBC 5.1 Driver}; SERVER=localhost; DATABASE=bi; UID=username; PWD=password; OPTION=3"
    conn.Open

    Set cmd.ActiveConnection = conn

            cmd.CommandText = " SELECT Product " & _
                            " FROM logistics " & _
                            " WHERE DATE(insert_timestamp) BETWEEN ? AND ? GROUP BY 1"

    Set param = cmd.CreateParameter(, adDate, adParamInput, , "2020-02-24 00:00:00")
    cmd.Parameters.Append param
    Set param = cmd.CreateParameter(, adDate, adParamInput, , "2020-02-24 23:59:59")
    cmd.Parameters.Append param

    Set rs = cmd.Execute

    Set rs = New ADODB.Recordset
    rs.Open strSQL, conn, adOpenStatic

    heet1.Range("A1").CopyFromRecordset rs

    rs.Close
    conn.Close

End Sub
通过上面的脚本,我试图从表
logistics
中获取数据
我想使用一个答案中建议的
ADODB.Parameter

但是,使用上面的代码,我在
设置rs=cmd.Execute
上得到
运行时错误'-2147217900(80040e14)


我需要在我的
VBA
中更改什么才能使其工作?

“2020-02-24 00:00:00”
是一个字符串,而不是一个日期。尝试
CDate(“2020-02-24 23:59:59”)
,或者
DateSerial(2020,2,24)+TimeSerial(23,59,59)
还有,为什么要用
Set rs=New ADODB.Recordset…
作为
cmd.Execute()
返回记录测试?或者,不要调用
Execute
,而是调用
rs.opencmd
。参见MSDN。另外,如上一个问题中的一个答案。如果要排除边界,请不要在之间使用
。使用
=
“2020-02-24 00:00:00”
是字符串,而不是日期。尝试
CDate(“2020-02-24 23:59:59”)
,或者
DateSerial(2020,2,24)+TimeSerial(23,59,59)
还有,为什么要用
Set rs=New ADODB.Recordset…
作为
cmd.Execute()
返回记录测试?或者,不要调用
Execute
,而是调用
rs.opencmd
。参见MSDN。另外,如上一个问题中的一个答案。如果要排除边界,请不要在
之间使用
。使用
=

Sub Get_Data()

Dim conn As ADODB.Connection, _
cmd As New ADODB.Command, _
param As ADODB.Parameter, _
rs As New ADODB.Recordset

    Set conn = New ADODB.Connection
    conn.ConnectionString = "DRIVER={MySQL ODBC 5.1 Driver}; SERVER=localhost; DATABASE=bi; UID=username; PWD=password; OPTION=3"
    conn.Open

    Set cmd.ActiveConnection = conn

            cmd.CommandText = " SELECT Product " & _
                            " FROM logistics " & _
                            " WHERE DATE(insert_timestamp) BETWEEN ? AND ? GROUP BY 1"

    Set param = cmd.CreateParameter(, adDate, adParamInput, , "2020-02-24 00:00:00")
    cmd.Parameters.Append param
    Set param = cmd.CreateParameter(, adDate, adParamInput, , "2020-02-24 23:59:59")
    cmd.Parameters.Append param

    Set rs = cmd.Execute

    Set rs = New ADODB.Recordset
    rs.Open strSQL, conn, adOpenStatic

    heet1.Range("A1").CopyFromRecordset rs

    rs.Close
    conn.Close

End Sub