Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 使用pyspark将字符串转换为日期_String_Date_Pyspark_Type Conversion - Fatal编程技术网

String 使用pyspark将字符串转换为日期

String 使用pyspark将字符串转换为日期,string,date,pyspark,type-conversion,String,Date,Pyspark,Type Conversion,我有一个pyspark数据框,其中有一个格式为YYYYMMDD的字符串列,我正在尝试将其转换为一个日期列(我应该有一个最终日期ISO 8061)。该字段名为deadline,格式如下: deadline 20190530 我尝试了以下解决方案: from pyspark.sql.functions import unix_timestamp, col from pyspark.sql.types import TimestampType from pyspark.sql.types impor

我有一个pyspark数据框,其中有一个格式为YYYYMMDD的字符串列,我正在尝试将其转换为一个日期列(我应该有一个最终日期ISO 8061)。该字段名为deadline,格式如下:

deadline
20190530
我尝试了以下解决方案:

from pyspark.sql.functions import unix_timestamp, col
from pyspark.sql.types import TimestampType
from pyspark.sql.types import StringType
from pyspark.sql.functions import from_unixtime
from pyspark.sql.types import DateType

df.select(to_date(df.deadline).alias('dt')).show()

df.withColumn('new_date',to_date(unix_timestamp(df.deadline, 'YYYYMMDD').cast('timestamp'))).show()

orders_concat.select(unix_timestamp(orders_concat.deadline, 'YYYYMMDD')).show()

df.select(unix_timestamp(df.ts_string, 'yyyy/MM/dd HH:mm:ss').cast(TimestampType()).alias("timestamp")).show()


df.select(unix_timestamp(df.deadline, 'yyyy/MM/dd HH:mm:ss').cast(TimestampType()).alias("timestamp")).show()

df.select(to_date(cast(unix_timestamp('deadline', 'YYYYMMDD').alias('timestamp').show()

 ndf = df.withColumn('_1', df['deadline'].cast(DateType()))

 df2 = df.select('deadline', from_unixtime(unix_timestamp('deadline', 'YYYYMMDD')).alias('date'))
我总是得到空值


有人有什么建议吗?

格式正确的
yyyyMMdd
,它可以正常工作:

从pyspark.sql导入函数为F
df.withColumn('new_date',F.to_date(F.unix_timestamp(df.deadline,'yyyyymmdd')).cast('timestamp')).show()
+--------+----------+                                                           
|截止日期|新日期|
+--------+----------+
|20190530|2019-05-30|
+--------+----------+

可能重复@Steven我尝试了该帖子中发布的解决方案,但均无效。我将编辑代码,因为我没有注意到我发布了旧版本(在新版本中,我尝试了正确的数据格式)