如何从pyspark pr sparksql中的date_time捕获时间部分?

问题描述

我具有bigint格式的visit_start_time_gmt字段,可以将其转换为date_time,但是现在我需要在另一列中删除时间戳记的时间部分,请参见下面的数据示例

enter image description here

解决方法

如果要截断时间,请使用date_trunc()函数。

  • 如果要转换为日期,请使用 to_date()函数。

Example:

df.show()
#+--------------------+
#|visit_start_time_gmt|
#+--------------------+
#|          1522555602|
#|          1522622390|
#+--------------------+

from pyspark.sql.functions import *

df.withColumn("date_hour",date_trunc("HOUR",to_timestamp(col("visit_start_time_gmt")))).\
withColumn("date",to_date(to_timestamp(col("visit_start_time_gmt")))).\
show()
+--------------------+-------------------+----------+
|visit_start_time_gmt|          date_hour|      date|
+--------------------+-------------------+----------+
|          1522555602|2018-04-01 04:00:00|2018-04-01|
|          1522622390|2018-04-01 22:00:00|2018-04-01|
+--------------------+-------------------+----------+