r - 在 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
在我的代码中使用,因为我有多个日期条件,我正在使用循环函数。
请对此提供任何帮助。
解决方案
使用函数从 DATEADD 函数中删除时间Convert
。
dbGetQuery(src,"SELECT * FROM sample WHERE eventdate BETWEEN '2017-01-31' AND convert(varchar,DATEADD(month, 1, '2017/08/25'),23)")
推荐阅读
- python - 在 df_python 的特定行上应用函数
- android - Android Kotlin 未从 USB FTDI 串行端口接收或读取数据
- performance - Tcl upvar 和 uplevel 的性能
- python - 读取大文本文件的下一行
- python-3.x - 如何在具有相同名称的python中拆分循环结果
- python - 使用 selenium 和 python 实现网站自动化
- firebase - 使用 FlutterFire 的 Firebase 自定义通知
- offline - 将保存的值修补到 PowerApps 中的 Dataverse 表
- angular - 当我多次使用 ngDoCheck 时,它会减慢并让我的应用程序无限执行
- swift - 从自己的 PickerView 获取值