>我有以下格式的日期:
- 083月1978:00:00:00
- 102月1973:00:00:00
- 15八月1982: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 中的日期的见解?
谢谢!
我认为你不需要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
现在了解您的日期,因此所有与日期相关的操作都将得到适当的执行。
我想出了怎么做:
all.new = all.new %>% withColumn("Date_of_Birth_Fixed", to_date(.$DATE_OF_BIRTH, "ddMMMyyyy"))
这适用于 Spark 2.2.x