【发布时间】:2021-07-09 02:43:04
【问题描述】:
我有以下示例数据框:
+------------------+-----------+
|order_completed_at|static_date|
+------------------+-----------+
|6/16/2021 21:29 |2021-10-10 |
|6/7/2021 9:29 |2021-10-10 |
|6/12/2021 15:35 |2021-10-10 |
|6/18/2021 22:25 |2021-10-10 |
|6/16/2021 5:25 |2021-10-10 |
+------------------+-----------+
其中两个字段都是字符串类型。我需要将这些转换为时间戳,我可以使用以下代码:
from pyspark.sql import functions as sql_functions
order_dates = order_dates.withColumn("order_completed_at_test", sql_functions.when() sql_functions.unix_timestamp(
sql_functions.col('order_completed_at'), "MM/dd/yyyy").cast("timestamp"))
order_dates = order_dates.withColumn("static_date_test", sql_functions.to_timestamp("static_date"))
但是,在order_completed_at 列中,可以有多种格式,例如MM/dd/yyyy 或yyyy-MM-dd
是否可以编写一个表达式来解释两种日期时间格式?
编辑:
我将结束这个问题,因为在这条路上处理动态日期格式是一个非常滑的斜坡,正如两个答案所指出的那样。我将要求客户对源数据进行更改
【问题讨论】:
标签: python apache-spark pyspark