Сгенерировать новые столбцы даты (недели) способом dplyr, чтобы SQL мог правильно переводить

#r #dplyr

#r #dplyr

Вопрос:

У меня есть таблица в базе данных MS SQL Server. В этой таблице есть столбец даты и времени с наблюдениями типа 2020-10-21 00:00:00 и я хочу сгенерировать два новых столбца из этих наблюдений даты dplyr и времени, а именно current_calendar_week и week_of_that_specific_date

Обычно, помимо баз данных, было бы:

 tibble(date=as_datetime("2020-10-21 00:00:00")) %>%
mutate(`current_week` = isoweek(Sys.Date()), `specific_week` = isoweek(date))
  

Но эти функции isoweek() (из lubridate) не могут быть переведены в SQL должным образом. Итак, мой вопрос в том, как мне правильно изменить эти новые столбцы с помощью dplyr, чтобы был эквивалентный перевод SQL?

Комментарии:

1. Вы можете сделать это в базе данных, но вы специально просите сделать это в R. Я удалил теги SQL и database .

Ответ №1:

DATE_PART и встроенный sql с dplyr::sql()

 tibble(date = as_datetime("2020-10-21 00:00:00")) %>%
mutate(`current_week` = dplyr::sql(DATE_PART('week', current_date)),
       `specific_week` = dplyr::sql(DATE_PART('week',  date)))