我试图在查询中使用参数,但我(或我的系统)似乎对日期有问题。
我正在连接到 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/