Apache spark 如何在pyspark中从时间戳中提取时间?

Apache spark 如何在pyspark中从时间戳中提取时间?,apache-spark,pyspark,apache-spark-sql,Apache Spark,Pyspark,Apache Spark Sql,我需要使用pyspark从时间戳(这是dataframe中的一列)提取时间。 假设这是时间戳2019-01-03T18:21:39,我只想提取时间“18:21:39”,以便它总是以这种方式显示“01:01:01” 我尝试了下面的方法,但没有得到预期的结果 df1=df.withColumn('time',concat(hour(df['datetime']),lit(":"),minute(df['datetime']),lit(":"),second(d

我需要使用pyspark从时间戳(这是dataframe中的一列)提取时间。 假设这是时间戳2019-01-03T18:21:39,我只想提取时间“18:21:39”,以便它总是以这种方式显示“01:01:01”

我尝试了下面的方法,但没有得到预期的结果

df1=df.withColumn('time',concat(hour(df['datetime']),lit(":"),minute(df['datetime']),lit(":"),second(df['datetime'])))

display(df1)
我的结果如下
6:6:56
,但我希望它们是
06:06:56

使用该函数

from pyspark.sql.types import StringType

df = spark \
  .createDataFrame(["2020-06-17T00:44:30","2020-06-17T06:06:56","2020-06-17T15:04:34"], StringType()) \
  .toDF('datetime')

from pyspark.sql.functions import date_format
q = df.withColumn('time', date_format('datetime', 'HH:mm:ss'))

>>> q.show()
+-------------------+--------+
|           datetime|    time|
+-------------------+--------+
|2020-06-17T00:44:30|00:44:30|
|2020-06-17T06:06:56|06:06:56|
|2020-06-17T15:04:34|15:04:34|
+-------------------+--------+

您要提取还是浓缩?您可以显示模式(特别是日期列的类型)吗?您可以使用来显示时间戳(df['date'],format='HH:mm:ss')@Jacek我已经更新了我的问题。我想以“HH:mm:ss”格式从时间戳中提取时间
+-------------------+-------+
|           datetime|   time|
+-------------------+-------+
|2020-06-17 00:44:30|0:44:30|
|2020-06-17 06:06:56| 6:6:56|
|2020-06-17 15:04:34|15:4:34|
+-------------------+-------+
from pyspark.sql.types import StringType

df = spark \
  .createDataFrame(["2020-06-17T00:44:30","2020-06-17T06:06:56","2020-06-17T15:04:34"], StringType()) \
  .toDF('datetime')

from pyspark.sql.functions import date_format
q = df.withColumn('time', date_format('datetime', 'HH:mm:ss'))

>>> q.show()
+-------------------+--------+
|           datetime|    time|
+-------------------+--------+
|2020-06-17T00:44:30|00:44:30|
|2020-06-17T06:06:56|06:06:56|
|2020-06-17T15:04:34|15:04:34|
+-------------------+--------+