首页 > 解决方案 > 在 R 中使用带有 DATEADD 条件的 SQL 查询时出错

问题描述

我正在尝试根据从 R 连接到 SQL 的日期条件提取数据。我的数据库连接来自 Impala。

下面是我的示例代码。

dbGetQuery(src,"SELECT * FROM sample WHERE eventdate BETWEEN '2017-01-31' AND DATEADD(m,1,'2017-01-31')")

尝试查询时出现以下错误。

Error in .verify.JDBC.result(r, "Unable to retrieve JDBC result set for ",  : 
Unable to retrieve JDBC result set for select * from sample where 
eventdate between '2017-01-31' and dateadd(m,1,'2017-01-31') ([Cloudera] 
[ImpalaJDBCDriver](500051) ERROR processing query/statement. Error Code: 0, 
SQL state: TStatus(statusCode:ERROR_STATUS, sqlState:HY000, 
errorMessage:AnalysisException: Could not resolve column/field reference: 'm'
), Query: select * from sample where eventdate between '2017-01-31' and dateadd(m,1,'2017-01-31').)

如果我在两个日期之间进行硬编码,而不是使用DATEADD我得到的结果,例如

dbGetQuery(src,"SELECT * FROM sample WHERE eventdate BETWEEN '2017-01-31' AND '2017-02-28' LIMIT 5")

我得到了上面代码的结果,但我想DATEADD在我的代码中使用,因为我有多个日期条件,我正在使用循环函数。

请对此提供任何帮助。

标签: rsql-server

解决方案


使用函数从 DATEADD 函数中删除时间Convert

dbGetQuery(src,"SELECT * FROM sample WHERE eventdate BETWEEN '2017-01-31' AND convert(varchar,DATEADD(month, 1, '2017/08/25'),23)")

推荐阅读