Приведите временные метки к временным меткам, используя mutate_if - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть база данных с временными метками (без часового пояса), которую я хотел бы преобразовать в timestamptz (с часовым поясом) перед использованием collect(). Пока я пробовал это:

db_tbl %>% mutate_if(lubridate::is.timepoint, funs(CAST))

Но я не могу понять, как добавить AS timestamptz к этому вызову функции

Это дает мне:

Error in result_create(conn@ptr, statement) : 
  Failed to prepare query: ERROR:  syntax error at or near ")"
LINE 1: SELECT "user_id", "time_zone", CAST("confirmed_at") AS "conf...

и

db_tbl %>% mutate_if(lubridate::is.timepoint, funs(sql(paste0(., "::timestamptz"))))

Но я не могу понять, как заставить paste0() выполнить вместо перевода в CONCAT: Это дает мне:

Applying predicate on the first 100 rows
<SQL>
SELECT "user_id", "time_zone", CONCAT_WS('', "confirmed_at", '::timestamptz') AS "confirmed_at"
FROM (SELECT "user_id", "time_zone", "confirmed_at"
FROM app.app_users) "paiaayosfl"

В конечном счете, я пытаюсь установить временные метки без R, используя свой местный часовой пояс, поэтому я был бы признателен за любое решение этой более крупной проблемы. Спасибо!

1 Ответ

0 голосов
/ 06 ноября 2018

Спасибо, ничего не дергается! (Просто шучу). Для наших будущих потомков:

  .data %>%
    mutate_if(lubridate::is.timepoint, funs(CAST(. %as% timestamptz))) 
...