当数据库内(PostgreSQL)dplyr::mutate
操作计算两个时间戳之间的差异时,将返回一个字符向量,表单的每个元素如:
> RPostgreSQL::dbGetQuery(db$con, 'select now() - current_date;')
?column?
1 09:23:48.880493
在这种情况下,它是HH:MM:SS.ssssss
。如何让dplyr
以秒为单位返回此时差矢量?也就是说,我想做与here相同的事情,除非将其作为mutate
声明的一部分。
示例dplyr
代码为:
tbl(db$con, 'tmp_table') %>%
mutate(time_diff = received_at - started_at) %>%
select(id, time_diff) %>%
collect(n = Inf)
答案 0 :(得分:0)
这对我来说绝不是一个令人满意的答案,但是这样做的一个迂回方式是:
tmp_table <-
tbl(db$con, 'tmp_table') %>%
mutate(time_diff = received_at - started_at) %>%
select(id, time_diff) %>%
compute() # creates a temporary table
然后,您可以使用以下命令查找临时表的名称:
as.character(tmp_table$ops$x$x)
就我而言,这是[1] "rzlhbxogjx"
。然后,您可以使用链接的答案:
RPostgreSQL::dbGetQuery(db$con,
paste0("select id, extract(epoch from time_diff)
as time_diff from ", as.character(tmp_table$ops$x$x), ";")