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

How to Convert Date in "01MAR1978:00:00:00" string format to Date Format in SparkR?

我有以下格式的日期:

  1. 1978 年 3 月 8 日:00:00:00
  2. 10FEB1973:00:00:00
  3. 15AUG1982:00:00:00

我想将它们转换为:

  1. 1978-03-08
  2. 1973-02-10
  3. 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 中的日期的见解吗?

谢谢!

我认为您不需要 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)实际上并不重要。原因是 'under the hood'、R 现在了解您的日期,因此所有与日期相关的操作都会正确执行。

我知道怎么做了:

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

这适用于 Spark 2。2.x