【问题标题】:Generate new date(week) columns the dplyr-way so that SQL can translate properly以 dplyr 方式生成新的日期(星期)列,以便 SQL 可以正确翻译
【发布时间】:2020-10-26 11:34:11
【问题描述】:

我在 MS SQL Server 数据库中有一个表。该表有一个日期时间列,其中包含2020-10-21 00:00:00 之类的观察结果,我想从这个日期时间观察结果中生成两个新列,分别是dplyrcurrent_calendar_weekweek_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 翻译?

【问题讨论】:

  • 您可以在数据库中执行此操作,但您特别要求在 R 中执行此操作。我删除了 SQL 和数据库标记。

标签: r dplyr


【解决方案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)))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-08
    • 2019-02-05
    • 1970-01-01
    • 1970-01-01
    • 2014-09-29
    • 1970-01-01
    • 2014-10-08
    • 1970-01-01
    相关资源
    最近更新 更多