sql - adDBTimeStamp - 访问 VBA 到 SQL Server 存储过程

标签 sql vba stored-procedures odbc parameter-passing

我希望将日期变量从 Access 传递到 SQL Server 存储过程。请看我的代码:

VBA:

searchDate = 03/07/2014
cmd.Parameters.Append _
        cmd.CreateParameter("@searchDate", adDBTimeStamp, adParamInput, , searchDate)

searchDate 是格式为 MM/DD/YYYY

的日期

SQL:

ALTER PROCEDURE [dbo].[spAppendActivity]
    @searchDate as datetime,
AS
   SET NOCOUNT ON;

   delete * from tbl_activity_losses;

   select [Date] 
   into tbl_activity_losses 
   from tbl_master_rec 
   where [Date] = @searchDate

我收到 ODBC 错误,指出

[Microsoft][ODBC SQL Server Driver] Conversion failed when converting date and/or time from character string.

任何有关如何将此日期字段传递给我的存储过程的帮助将不胜感激。

最佳答案

问题是adDBTimeStamp。它将简单的日期字符串转换为时间戳。 (不是日期)

当该时间戳被传递到存储过程时,SQL Server 不知道如何将该长字符串转换为日期。

将类型从 adDBTimeStamp 更改为 adVarChar 会将其保留为字符串,并且 SQL Server 将知道如何正确解析它。

此外,您还可以将存储过程类型从 DateTime 更改为 varchar。 SQL Server 将知道如何将其解析为日期。

关于sql - adDBTimeStamp - 访问 VBA 到 SQL Server 存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24003576/

相关文章:

mysql - 创建数据库

c# - 除了触发存储过程 368 次来更新数据库之外,还有什么好的替代方法?

mysql - 更新两个表 - 错误 - 'product_varities.product_varities_id' 中的未知列 'where clause'

vba - 在 Excel 公式中达到 =sum 中的最大被加数时是否有解决方法?

mysql - 从 Rails 3 调用 MySQL 存储过程(返回结果集)时出错

mysql - 字段值不包含空格的 SQL 查询

c# - 当两个值都添加了字符串时,如何执行 Linq LIKE 或 Contains

android - 这种从sqlite获取数据的方式正确吗?

vba - 自动筛选(或循环)并根据单元格值复制到另一个工作簿

html - VBA Web Scraping 使用 getElementsByClassName 获取名称和地址