【问题标题】:adDBTimeStamp - Access VBA to SQL Server Stored ProcedureaddDBTimeStamp - 访问 VBA 到 SQL Server 存储过程
【发布时间】:2014-07-23 02:30:45
【问题描述】:

我希望将日期变量从 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] 从字符串转换日期和/或时间时转换失败。

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

【问题讨论】:

  • 尝试在存储过程中打印出@searchDate 的值。我敢打赌,它会与您认为发送的内容大不相同。
  • 格式为(yyyymmddhhmmss 加上十亿分之一)。我不确定如何更改我的代码以传递这样的值。你有什么想法吗?
  • 您选择adDBTimeStamp有什么原因吗?
  • 我尝试使用 adbdDate 并返回错误“[Microsoft][ODBC SQL Server Driver] Optional Feature Not Implemented。”我还没有找到其他传递日期变量的方法。你有什么建议吗?
  • 我看到你以前发布过这个问题。 adVarChar 工作了吗?

标签: sql vba stored-procedures odbc parameter-passing


【解决方案1】:

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

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

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

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

【讨论】:

  • 当我尝试将它作为 varchar 传递时,我收到以下错误:从字符串转换日期和/或时间时转换失败。"
猜你喜欢
  • 2018-11-10
  • 1970-01-01
  • 2020-02-24
  • 2011-11-07
  • 1970-01-01
  • 1970-01-01
  • 2010-09-08
  • 2012-04-18
  • 2013-08-14
相关资源
最近更新 更多