【问题标题】:SparkR - Extracting Month from Date FieldSparkR - 从日期字段中提取月份
【发布时间】:2018-07-31 16:18:29
【问题描述】:

我正在使用 Databricks 和 SparkR,尝试从日期字段中提取月份,但在尝试使用函数 month() 时不断收到以下错误:

as.POSIXlt.default(x, tz = tz(x)) 中的错误: as.POSIXlt.default(x, tz = tz(x)) 中的错误: 不知道如何将“x”转换为“POSIXlt”类

如果我使用 dayofmonth() 它运行完美,所以我不确定我做错了什么。

这是我尝试使用的字段示例。

$ Net_due_date : 日期 2017-10-06 2017-10-05 2018-01-17 2017-12-23 2017-08-20 2018-01-17 $ Clearing_Date : 日期 2017-10-06 2017-10-17 1900-01-01 2017-12-26 2017-08-24 2018-01-19

有什么想法吗?

谢谢

【问题讨论】:

    标签: date sparkr databricks


    【解决方案1】:

    如果没有可重现的示例,我无法确定,但请先尝试将该列转换为时间戳。

    df$Net_due_date_month <- month(cast(df$Net_due_date, 'timestamp'))
    

    【讨论】:

    • 对不起,我在这里很新,所以不知道如何添加可重现的示例,除了我上面包含的数据。我尝试了您的解决方案,但得到了同样的错误。
    【解决方案2】:

    您可以提供一小部分数据,以便复制错误。我怀疑您的日期列不是日期格式。

    您可以尝试以下任何一种方法:

    library(lubridate)
    
    df$Net_due_date_month <- month(as.Date(df$Net_due_date, format = '%Y-%m-%d'))
    

    或

    df$Net_due_date_month <- month(as.POSIXlt(df$Net_due_date, format = '%Y-%m-%d'))
    

    【讨论】:

      猜你喜欢
      • 2016-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-11
      • 1970-01-01
      • 2015-02-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多