首页 文章

如何将“01MAR1978:00:00:00”字符串格式的日期转换为SparkR中的日期格式?

提问于
浏览
0

我有以下格式的日期:

  • 08MAR1978:00:00:00

  • 10FEB1973:00:00:00

  • 15AUG1982:00:00:00

我想将它们转换为:

  • 1978-03-08

  • 1973-02-10

  • 1982-09-15

我在SparkR中尝试了以下内容:

period_uts <- unix_timestamp(all.new$DATE_OF_BIRTH, '%d%b%Y:%H:%M:%S')
period_ts <- cast(period_uts, 'timestamp')
period_dt <- cast(period_ts, 'date')
df <- withColumn(all.new, 'p_dt', period_dt)

但是当我这样做时,所有日期都变成了“NA” .

任何人都可以提供一些见解如何将日期转换为%d%B%Y:%H:%M:%S格式转换为SparkR中的日期?

谢谢!

2 回答

  • 0

    我认为你不需要 SparkR 来解决这个问题 .

    你有什么:

    DoB <- c("08MAR1978:00:00:00", "10FEB1973:00:00:00", "15AUG1982:00:00:00")
    

    如果您想获得1978-03-08等,您可以将 as.Date 与您自己发现的日期格式结合使用:

    as.Date(DoB, format="%d%B%Y:%H:%M:%S")
    # [1] "1978-03-08" "1973-02-10" "1982-08-15"
    

    as.Date 将确保 R 知道如何将您的字符串解释为日期 .

    但是请注意,一般来说,日期显示给你的方式(即1978-03-08)实际上是在引擎盖下, R 现在了解你的日期,所以所有与日期相关的操作都将适当地执行 .

  • 0

    我想出了怎么做:

    all.new = all.new %>% withColumn("Date_of_Birth_Fixed", to_date(.$DATE_OF_BIRTH,  "ddMMMyyyy"))
    

    这适用于Spark 2.2.x.

相关问题