SparkR-从日期字段中提取月份

时间:2018-07-31 16:18:29

标签: date sparkr databricks

我正在使用Databricks和SparkR,尝试从Date字段中提取月份,但在尝试使用功能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

有什么想法吗?

谢谢

2 个答案:

答案 0 :(得分:0)

我不确定没有可复制的示例,但请尝试先将列强制转换为时间戳。

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

答案 1 :(得分:0)

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

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

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'))