如何转换日期" 01MAR1978:00:00:00"字符串格式到SparkR中的日期格式?

时间:2017-10-30 13:11:31

标签: r apache-spark sparkr

我的日期格式如下:

  1. 08MAR1978:00:00:00
  2. 10FEB1973:00:00:00
  3. 15AUG1982:00:00:00
  4. 我想将它们转换为:

    1. 1978年3月8日
    2. 1973年2月10日
    3. 1982年9月15日
    4. 我在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)    
      

      但是当我这样做时,所有的日期都会变成&#34; NA&#34;。

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

      谢谢!

2 个答案:

答案 0 :(得分: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)实际上并不重要。原因是&#39;引擎盖下,R现在了解您的日期,因此所有与日期相关的操作都将正确执行。

答案 1 :(得分:0)

我想出了怎么做:

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

这适用于Spark 2.2.x