我试图在查询中使用参数,但我(或我的系统)似乎对日期有问题。

我正在连接到 MS SQL Server

并定义我想要处理的特定日期
endDate <- '02.08.2015'我的查询如下所示:

test <-"SELECT [RDate],[Currency_ID],[Rate],[NRate]
FROM [dwh].[dbo].FC_CurrencyRate]
WHERE RDate = ? "

sqlExecute(myconn,test, endDate)

这给出了以下错误



然后我尝试更改日期格式
endDate <- as.Date(endDate, format='%d.%m.%Y')
sqlExecute(myconn,test, endDate)

但这会导致另一个错误



这是一个典型的问题吗?是否还有其他类型的使用 R 的日期格式?

我还尝试过拥抱问号?通过引号作为“?”。
这导致 Rstudio 崩溃并且查询时间太长。

任何提示表示赞赏

最佳答案

我花了很长时间试图弄清楚如何使用 R 中的 sqlExecute 将日期作为参数传递到我的 DB2 数据库。我在任何地方都找不到简明的答案,我得到了这种类型的输出:

> sql
[1] "select date from date where date = ?"
> sqlExecute(conn, sql, data = as.Date("2015-01-01"))
Error in sqlExecute(conn, sql, data = as.Date("2015-01-01")) :
  07006 -99999 [IBM][CLI Driver] CLI0102E  Invalid conversion. SQLSTATE=07006
[RODBCext] Error: SQLBindParameter failed

通读 RODBCext 文档,我从 Zozlak Source 中偶然发现了这一行



所以我试了一下:
> sqlExecute(conn, sql, data = as.character(as.Date("2015-01-01")), fetch = T)
        DATE
1 2015-01-01

我的天啊!它 工作 !!!

我希望这可以帮助别人。我不知道这对于不同的 DBMS 是否是一致的解决方案,但对于我的 DB2 连接,它工作得很好。

关于sql-server - RODBCExt : sqlExecute issue with dates,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31975200/

10-13 07:27