【发布时间】:2018-07-12 16:25:47
【问题描述】:
我正在尝试使用 dbplyr 包计算 R 中两个日期之间的月差,我想发送 sql 查询以使用 mysql 中的“timestampdiff”本机函数计算它,但出现错误:
library(tidyverse)
library(lubridate)
library(dbplyr)
db_df <- tbl(con, "creditos")
db_df %>% mutate(diff_month = timestampdiff(month, column_date_1, column_date_2))
但参数month 没有被正确翻译,因为它看起来像 R 中的对象或函数:
UseMethod("escape") 中的错误: 没有适用于“函数”类的对象的“转义”方法
如果这样写:
db_df %>% mutate(diff_month = timestampdiff("month", column_date_1, column_date_2))
我也会报错:
您的 SQL 语法有错误;查看与您的 MySQL 服务器版本相对应的手册,了解在
month、column_date_1、column_date_2) ASdiff_month附近使用的正确语法
我相信这是因为 dbplyr 正在将带有双引号的“月”写入 mysql,它应该不带双引号,如下所示:
TIMESTAMPDIFF(month, column_date_1, column_date_2) AS `diff_month`
或者有没有更好的方法来使用 dbplyr 计算月差?
【问题讨论】: